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();  

  }

}

另外,若将wen.xml中<web-app>的metadata-complete属性设置为true(默认是false),则部署时将不再扫描标注与web-fragment.xml中的定义,如果有<absolute-ordering>与<ordering>也会被忽略

posted @ 2015-04-20 12:09  碧波寒  阅读(283)  评论(0编辑  收藏  举报