Servlet知识总结
来源:互联网 发布:电缆设备负荷计算软件 编辑:程序博客网 时间:2024/06/06 09:41
本篇博文总结以下Servlet的基础知识。
- Servlet的生命周期
- Servlet的三个装载时机
- Servlet的执行过程
- web.xml里面的相关配置都是什么意思
- Servlet路径跳转
- request和response的各个方法
- Filter
- war包的结构
- Servlet 3.0的新特性
Servlet的生命周期
- 创建Servlet。
- 执行构造方法,一般在Servlet第一次加载的时候执行。
- 执行初始化方法,init()。
- 根据Tomcat的解析执行不同的相应方法,主要有service(),doGet(),doPost()方法。
- 执行销毁方法,destory()。
Servlet的三个装载时机
首先明确一点。Servlet在创建之后,自始至终都是存在于内存中的。
- 第一次访问Servlet的时候创建。
- 容器(Tomcat)启动时创建(自动装载)。
- 由在web.xml文件中为Servlet设置的
<load-on-startup>
属性决定 - 数字越小,优先级越高,最小是0。
- 由在web.xml文件中为Servlet设置的
- Servlet文件被修改之后,需要重新装载servlet。
Servlet的执行过程
以<a href="servlet/HelloServlet"/>为例。
最简单的web.xml的配置如下:
<servlet> <servlet-name>servletTest</servlet-name> <servlet-class>servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>servletTest</servlet-name> <url-pattern>/servlet/HelloServlet</url-pattern> </servlet-mapping>
- 根据a标签里的路径去
<servlet-mapping></servlet-mapping>
这个标签里找路径所对应的servlet的名字。路径应该是存在这里的<url-pattern>/servlet/HelloServlet</url-pattern>
。 - 然后根据servlet的名字去
<servlet></servlet>
这个标签里找对应的java类。java类应该是存在这里的:<servlet-class>servlet.HelloServlet</servlet-class>
。 - 然后执行doGet()或者doPost()方法。这就是一个Servlet的最简单的执行过程。
web.xml里面的相关配置都是什么意思
web.xml里面的相关配置详解
Servlet路径跳转
路径的跳转主要是分为两种:
- 第一种是服务器内部跳转,这个方法是使用最广泛的。
以相对路径为例:request.getRequestDispatcher("../test.jsp").forward(request, response);
之后浏览器显示的路径就是:
http://localhost:8080/项目名称/test.jsp
- 第二种是使用请求重定向。
首先使用request.getContextPath()获得上下文对象。response.sedRedirect(request.getContextPath()+"/test.jsp")
request和response的各个方法
- HttpServletRequest对象详解
Filter
Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应。 主要用于对HttpServletRequest 进行预处理,也可以对HttpServletResponse 进行后处理,是个典型的处理链。
- Filter有如下几个用处。
- 在HttpServletRequest到达Servlet之前,拦截客户HttpServletRequest。
- 根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据。
- 在HttpServletResponse到达客户端之前,拦截HttpServletResponse。
- 根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。
优点:过滤链的好处是,执行过程中任何时候都可以打断,只要不执行chain.doFilter()就不会再执行后面的过滤器和请求的内容。而在实际使用时,就要特别注意过滤链的执行顺序问题。
穿件一个Filter的步骤如下:
- 建立一个实现Filter接口的类。这个类需要三个方法,分别是:doFilter、init和destroy。doFilter方法包含主要的过滤代码(见第2步),init方法建立设置操作,而destroy方法进行清楚。
- 在doFilter方法中放入过滤行为。doFilter方法的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单的过滤器中忽略此参数。最后一个参数为FilterChain,如下一步所述,此参数用来调用servlet或JSP页。
- 调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作为它的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。
- 对相应的servlet和JSP页面注册过滤器。在部署描述符文件(web.xml)中使用filter和filter-mapping元素。
- 禁用激活器servlet。防止用户利用缺省servlet URL绕过过滤器设置。
web.xml的配置如下:
<filter> <filter-name>LogFilter</filter-name> <filter-class>com.mucfc.LogFilter</filter-class> </filter> <filter-mapping> <filter-name>LogFilter</filter-name> <url-pattern>/*</url-pattern><!-- 表示处理根目录下的所有请求 --> </filter-mapping>
映射到servlet:
<filter-mapping> <filter-name>FilterName</filter-name> <servlet-name>ServletName1</servlet-name> </filter-mapping> <filter-mapping> <filter-name>FilterName</filter-name> <servlet-name>ServletName2</servlet-name> </filter-mapping>
映射到JSP:
<filter-mapping> <filter-name>FilterName</filter-name> <url-pattern>/path/FileName.jsp</url-pattern> </filter-mapping>
映射到任意URL:
<filter-mapping> <filter-name>FilterName</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
war包的结构
下面是最常见的war包结构:
webapp.war | index.jsp | |— images |— META-INF |— WEB-INF | web.xml // WAR包的描述文件 | |— classes | action.class // java类文件,编译后的字节码 | |— lib other.jar // 依赖的jar包 share.jar
Servlet 3.0的新特性
http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/index.html
阅读全文
1 0
- Servlet知识总结
- Servlet知识总结
- servlet知识总结
- servlet知识总结笔记
- Servlet 知识总结
- servlet 重点知识 总结
- Servlet知识总结
- Servlet&JSP&Struts知识总结
- JavaEE知识之servlet总结
- Servlet的重点知识总结
- servlet第九天知识总结
- Servlet相关知识的总结
- servlet过滤器的相关知识总结
- Servlet过滤器和监听器知识总结
- Java web 开发中的servlet知识总结
- 学习总结之 Servlet入门知识笔记
- Servlet过滤器和监听器知识总结
- Servlet过滤器和监听器知识总结
- 微信公众号支付总结
- Mysql在linux上使用
- 数据结构与算法分析c++版本学习总结
- 集合扩容
- 你真的会用 CocoaPods 吗?
- Servlet知识总结
- LeetCode20. Valid Parentheses
- okhttp+banner实现自动轮播图
- TCP/IP
- MUI 页面切换时等待动画怎么设置?
- 导航页下拉菜单
- 【论文笔记】Margin Sample Mining Loss: A Deep Learning Based Method for Person Re-identification
- bzoj 1061 [Noi2008]志愿者招募 单纯形算法
- 入门surfaceView实现画图板