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>也会被忽略
servlet笔记1的更多相关文章
- servlet 笔记
Servlet的作用是接收浏览器传给服务端的请求(request),并将服务端处理完的响应(response)返回给用户的浏览器,浏览器和服务端之间通过http协议进行沟通,其过程是浏览器根据用户的选 ...
- servlet笔记
开发servlet有三种方法: (1) 实现 Servlet接口 (2) 通过继承 GenericServlet (3) 通过继承 HttpServlet get提交和post提交的 ...
- servlet笔记,配置与 http相关
tomcat配置环境变量: JAVA_HOME= 指向你的jdk的主目录(bin目录的上一层) server.xml: <Context path="/myweb2&qu ...
- Servlet 笔记-Session 跟踪
HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录. 但是仍然有以下三种方式来维持 ...
- Servlet 笔记-Cookie 处理
Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息. 识别返回用户包括三个步骤: 服务器脚本向浏览器发送一组 Cookie.例如:姓名.年龄或识别号码等. 浏览器将这些信息存储在本地 ...
- Servlet 笔记-异常处理
当一个 Servlet 抛出一个异常时,Web 容器在使用了 exception-type 元素的 web.xml 中搜索与抛出异常类型相匹配的配置. 必须在 web.xml 中使用 error-pa ...
- Servlet 笔记-过滤器
Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息. 可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Servlet.Servlet 过滤 ...
- Servlet 笔记-读取表单数据
Servlet 处理表单数据,这些数据会根据不同的情况使用不同的方法自动解析: getParameter():您可以调用 request.getParameter() 方法来获取表单参数的值. get ...
- Servlet 笔记-servlet实例
Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类.Web 应用程序开发人员通常编写 Servlet 来扩展 javax.servlet.h ...
- Servlet 笔记-生命周期
Servlet 生命周期可被定义为从创建直到毁灭的整个过程.以下是 Servlet 遵循的过程: Servlet 通过调用 init () 方法进行初始化. Servlet 调用 service() ...
随机推荐
- 关于keyCode, 键盘代码。 和零散的javascript知识。http://js2.coffee/(转化工具)
这个是coffeescript代码 document.addEventListener 'turbolinks:load', -> document.getElementById(" ...
- linux shell执行原理
shell简介 Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. 运行背景 a 一个基本的linux系统结构 b.由上图可以看出,shel ...
- voj 1754 spfa
最优贸易 最优贸易 描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分 ...
- LeetCode 48
这种方法首先对原数组取其转置矩阵,然后把每行的数字翻转可得到结果,如下所示(其中蓝色数字表示翻转轴): 1 2 3 1 4 7 7 4 1 4 5 6 --> 2 5 ...
- linux 常用操作以及概念
一.常用操作以及概念 查看LINUX发行版的名称及其版本号的命令: lsb_release -a cat /etc/redhat-release(针对redhat,Fedora) 0.rpm包路径:/ ...
- JQuery鼠标移到小图显示大图效果的方法
JQuery鼠标移到小图显示大图效果的方法 本文实例讲述了JQuery鼠标移到小图显示大图效果的方法.分享给大家供大家参考.具体分析如下: 这里的显示大图功能类似上一篇<JQuery实现超链接鼠 ...
- Google Web Designer打开白屏问题的解决方案
Google Web Designer是谷歌出品的一个可视化的 HTML5 网页和广告的设计开发工具 Google Web Designer . 官网地址:https://www.google. ...
- PostgreSQL脱敏示例
mydb=# create table test_desensitization(id integer, name varchar(32), phone_num varchar(11)); CREAT ...
- springboot整合mybatis增删改查(三):mybatis逆向工程
上一篇已经把项目基本框架完善,接下来就是利用Mybatis Generator逆向工程进行mybatis的整合. 我们在创建项目开始的时候已经勾选web,mybatis,sql等,但是这些依赖还是不够 ...
- springboot读取配置文件的顺序
前言 今天测试一些东西,发现配置文件连接的数据库一直不正常,数据也不对,今天请教了之后,原来springboot的配置文件加载不仅仅是项目内的配置文件. 正文 项目目录是这样的:文件夹下有:项目,ap ...