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>也会被忽略

servlet笔记1的更多相关文章

  1. servlet 笔记

    Servlet的作用是接收浏览器传给服务端的请求(request),并将服务端处理完的响应(response)返回给用户的浏览器,浏览器和服务端之间通过http协议进行沟通,其过程是浏览器根据用户的选 ...

  2. servlet笔记

    开发servlet有三种方法: (1)    实现 Servlet接口 (2)    通过继承 GenericServlet (3)    通过继承 HttpServlet get提交和post提交的 ...

  3. servlet笔记,配置与 http相关

    tomcat配置环境变量:        JAVA_HOME= 指向你的jdk的主目录(bin目录的上一层) server.xml: <Context path="/myweb2&qu ...

  4. Servlet 笔记-Session 跟踪

    HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录. 但是仍然有以下三种方式来维持 ...

  5. Servlet 笔记-Cookie 处理

    Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息. 识别返回用户包括三个步骤: 服务器脚本向浏览器发送一组 Cookie.例如:姓名.年龄或识别号码等. 浏览器将这些信息存储在本地 ...

  6. Servlet 笔记-异常处理

    当一个 Servlet 抛出一个异常时,Web 容器在使用了 exception-type 元素的 web.xml 中搜索与抛出异常类型相匹配的配置. 必须在 web.xml 中使用 error-pa ...

  7. Servlet 笔记-过滤器

    Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息. 可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Servlet.Servlet 过滤 ...

  8. Servlet 笔记-读取表单数据

    Servlet 处理表单数据,这些数据会根据不同的情况使用不同的方法自动解析: getParameter():您可以调用 request.getParameter() 方法来获取表单参数的值. get ...

  9. Servlet 笔记-servlet实例

    Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类.Web 应用程序开发人员通常编写 Servlet 来扩展 javax.servlet.h ...

  10. Servlet 笔记-生命周期

    Servlet 生命周期可被定义为从创建直到毁灭的整个过程.以下是 Servlet 遵循的过程: Servlet 通过调用 init () 方法进行初始化. Servlet 调用 service()  ...

随机推荐

  1. ajax方法携带授权标识

    $.ajax({ type: "post", url: "/api/login", data: { username: getusername, passwor ...

  2. 随机梯度下降算法求解SVM

    测试代码(matlab)如下: clear; load E:\dataset\USPS\USPS.mat; % data format: % Xtr n1*dim % Xte n2*dim % Ytr ...

  3. idea JMX 连接器服务器通信错误

    错误描述:错误: JMX 连接器服务器通信错误: service:jmx:rmi://DESKTOP-46OA4KK 打开Edit Configurations 发现vm options那一栏居然是空 ...

  4. itembase协同过滤的详细介绍

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:https://www.cnblogs.com/by-dream/p/9016289.html 前言 通常我们在网购的时候会遇到这 ...

  5. java应用简单递归

    毕业后就怎么学过算法,还在上学的时候学过数据结构,现在基本上都还给老师了,可惜老师学费没有还给我... 情景: 类似于给定一个数字,算他由多少个数字组成,比如:36 现在有10.5.1 ,那么最佳帅3 ...

  6. L204

    Riding a bike is good exercise and great fun. But what do you do with a bike after you outgrow it? N ...

  7. 各开源 bbs 程序比较

    主要是集中在 php 开源轻巧的程序. 搜索到一个逼乎的一个帖子:https://www.zhihu.com/question/20655704 ,顺藤摸瓜 下. carbon forum 第一个测试 ...

  8. I.MX6 eMMC 中启动U-boot存放的首地址

    /************************************************************************************ * I.MX6 eMMC 中 ...

  9. [QT]QPixmap图片缩放和QLabel 的图片自适应效果对比

    图片大小为600x600 效果图: ui->label->setScaledContents(true);                                         ...

  10. Codeforces 990B :Micro-World

    B. Micro-World time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...