servlet笔记1

Myeclipse关于Servlet项目文件的组织方面,如下:

WEB-INF:这个目录名称和位置是固定的,放置在该目录下的文件或目录,对外界来说的封闭的,也就是客户端无法用http的任何方式访问到其中的文件。如有这类需求,则必须通过Servlet/jsp的请求转发(Forward)。可用于保存资源。

web.xml:这是web应用程序部署描述文件,位置和名称固定。

lib:放置JAR文件,位置和名称固定。

classes:放置编译后的类文件

Servlet部署方面:

URL模式的设置,一个请求URI实际上是由三部分组成:

requestURI = contextPath + servletPath + pathInfo;

可以使用httpServletRequest的getRequestURI()来取得这项信息

首先,环境路径contextPath,是容器用来决定挑选哪个Web应用程序的依据,可以使用httpServletRequest的getContextPath()来获得,环境路径一般以"/"开头,若应用程序环境路径与Web服务器环境跟路径相同,则应用程序环境路径为空字符串。

一旦决定Web服务程序,接下来就进行Servlet的挑选,Servlet必须设置URL模式(url-pattern),三种设置方法,例如:/admin/login.do,/admin/*与*.do三个url模式设置,请求对比的原则是最严格的匹配优先原则。

其次,requestURI中的servletPath是Servlet路径,不包括路径信息和和请求参数,Servlet路径直接对应URL模式信息,可以使用httpServletRequest的getServletPath()获取,基本是以"/"开头,但在"/*"与""的情况下,Servlet的值为空字符串。

例如:某个请求是根据/hello.do对应至某个Servlet,则getServletPath()取得的Servlet路径就是/hello.do,如果是通过/servlet/*对应的,则取得的Servlet路径就是/servlet。

再次,requestURI中的pathInfo是路径信息,指的是不包括环境路径和Servlet路径的额外路径信息,通过httpServletRequest的getPathInfo()获取,若为类似*.do、预设Servlet或完全匹配的情况下,getPathInfo()得到的是null。

@WebServlet("/servlet/*")
public class HelloServlet extends HttpServlet {

  public void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {

    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

    out.println("<HTML>");

    out.println("<HEAD><TITLE>A Servlet</TITLE></HEAD>");

    out.println("<BODY>");

    out.print(request.getRequestURI()+"<br/>");

    out.print(request.getContextPath()+"<br/>");

    out.print(request.getServletPath()+"<br/>");

    out.print(request.getPathInfo()+"<br/>");

    out.println("  </BODY>");

    out.println("</HTML>");

    out.flush();

    out.close();

  }

}

时间: 2024-10-10 15:31:04

servlet笔记1的相关文章

Servlet 笔记

1,精确配置 表单提交地址 action="<%=request.getContextPath()%>/AddNewsServlet" <%=request.getContextPath()%> -->获取页面上下文环境 <url-pattern>配置内容: <url-pattern>/AddNewsServlet</url-pattern>2,Servlet 和 Filter 初始化顺序 ①Filter 在web服务器

servlet笔记整理

一.简介 servlet是一段服务器程序,它是客户端和服务端的 中间层.可以通过servlet往页面动态展示当前时间,可以从客户端接受数据存到数据库,或者从数据库取数据到页面展示给客户. 二.应用程序的体系结构 1.C/S(Client/Server) 特点:1必须安装特定软件:   2维护升级麻烦: 2.B/S(Browser/Server) 特点:1不需要安装特定软件   2维护升级相对简单   3使用的是http协议,方便和internet整合 三. (1)实现servlet接口  必须实

servlet笔记

开发servlet有三种方法: (1)    实现 Servlet接口 (2)    通过继承 GenericServlet (3)    通过继承 HttpServlet get提交和post提交的区别: 1.   从安全看 get<post 因为get 会把提交的信息显示到地址栏 2.   从提交内容看 get<post get 一般不要大于2k, post理论上无限制,但是在实际开发中,建议不要大于64k 3.   从速度看 get>post 4.   Get可以保留uri中的参数

Servlet笔记9--转发与重定向

关于Web中资源跳转的问题: 转发和重定向基本代码: 1 package com.bjpowernode.javaweb; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.h

Servlet笔记6--Servlet程序改进

第一步改进,GenericServlet: 我们目前所有放入Servlet类直接实现了javax.servlet.Servlet接口,但是这个接口中有很多方法是目前不需要的,我们可能只需要编写service.直接实现Servlet接口代码丑陋,有必要在中间添加一个适配器,以后所有的Servlet类不再直接实现Servlet接口,应该去继承适配器类. 适配器除了可以让代码优雅之外,我们还可以在适配器中提供大量的方法,子类继承之后,可以在子类中直接使用,方便编程. 自己使用缺省适配器设计模式实现的G

Servlet笔记8--乱码解决方案

乱码解决方案: 代码详解: 1 package com.bjpowernode.javaweb.servlet; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.H

新手学习JSP+Servlet笔记一

作为一个新手,初次接触jsp,servlet,习惯了后台的开发,前台的知识一窍不通,利用闲暇时间,给自己补补,从MyEclipse开始. 安装好MyEclipse之后,没有安装程序的可以下载 http://yunpan.cn/cAXWu3zjE5Ssj  提取码 7aaa 新建一个Web Project,MyEclipse很多都是定义好的模板,新建一个Servlet,简单的工程就建好了 Web.xml中 <?xml version="1.0" encoding="UTF

Servlet笔记10--Session

Web编程中的Session: 代码示例: 1 package com.bjpowernode.javaweb.servlet; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servle

Servlet笔记11--补充

Servlet线程安全问题: 代码示例: 1 package com.bjpowernode.javaweb.servlet; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletR

Servlet 笔记-Session 跟踪

HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录. 但是仍然有以下三种方式来维持 Web 客户端和 Web 服务器之间的 session 会话: Cookies 一个 Web 服务器可以分配一个唯一的 session 会话 ID 作为每个 Web 客户端的 cookie,对于客户端的后续请求可以使用接收到的 cookie 来识别. 这可能不是一个有效的方法,因为很多浏览器不支持 cook