Servlet 接受请求,调用JavaBean去处理请求
Jsp 接收请求,调用javaBean去处理请求、显示数据(jsp是一种负责显示的技术,如何专注显示?--》将显示与接受请求、处理请求的工作分开)
JavaBean: 封装数据 业务逻辑
Servlet做了什么
本身不做任何业务处理、只是接收请求并决定调用哪个JavaBean去处理请求、确定用哪个页面来显示处理返回的数据
Servlet是什么?
Server+Applet,是一种服务器端的java应用程序
只有当一个服务器端的程序使用了servlet API的时候,这个服务端的程序才能称之为servlet
Servlet
Java程序 、运行在服务器端、需要web容器的支持、使用了servletAPI、本身不做任何业务处理,中间调度作用
servletAPI
Javax.servlet.Servlet接口
所有java Servlet的基础接口类,规定了必须由servlet具体类实现的方法集
Javax.servlet.GenericServlet类
是servlet的通用版本,是一种与协议无关的Servlet
Javax.servlet.http.HttpServlet类
在GenericServlet基础上扩展的基于Http协议的servlet
Init()
Service()
doGet()
doPost()
Destroy()
第一个servelet
Servlet中主要的方法
Init() :servlet的初始方法,仅仅会执行一次
Service() 处理请求和生成响应 (类似于doGet 和dopost)
Destroy() 在服务器停止并且程序中的servlet对象不再使用的时候调用,只执行一次
servletRequest
封装客户的请求信息
作用相当于JSP内置对象request
servletResponse
创建响应信息,将处理结果返回给客户端
作用相当于JSP内置对象response
servletCOnfig
包含了servlet的初始化参数信息
Servlet生命周期
加载和实例化
初始化
处理请求
销毁
生命周期 谁来做 何时做
实例化 servlet容器 当servlet容器启动或者容器检测到客户端请求时
初始化 servlet容器 实例化后,容器调用servlet的init()初始化对象
处理请求 servlet容器 得到客户端请求并作出处理时
销毁 servlet容器 当程序中的servlet对象不再使用的时候,或者web
服务器停止运行的时候
Servlet路径跳转问题
HttpServletReponse(重定向 reponse.senRedirect())
Http://localhost:8080/Title/addServlet
- 相对路径
response.sendRedirect("newsDetailList.jsp");
Http://localhost:8080/Title/addServlet/newsDetailList.jsp - 绝对路径
response.sendRedirect("/Title/jsp/admin/newsDetailList.jsp");
Http://localhost:8080/Title/jsp/admin/newsDetailList.jsp
HttpServletRequest 转发 request.getRequestDispatcher().forward();
Http://localhost:8080/Title/addServlet
1相对路径
request.getRequestDispatcher("newsDetailList.jsp").forward(....);
Http://localhost:8080/Title/addServlet/newsDetailList.jsp
2绝对路径
request.getRequestDispatcher("/jsp/admin/newsDetailList.jsp").forward(....);
Http://localhost:8080/Title/jsp/admin/newsDetailList.jsp
过滤器的概念
是向web应用程序的请求和响应添加功能的web服务组件
过滤器可以统一的集中处理请求和响应
使用过滤器技术实现对请求数据的过滤
过滤器使用步骤
建立实现Filter接口的类(javax.servlet.Filter)
实现过滤行为-doFilter()
doFilter(..){
//过滤请求
Chain.doFilter(request,reponse);//调用下一个过滤器或web资源
//过滤响应
}
在web.xml中配置过滤器
<filter>
<filter-name>过滤器名</filter-name>
<filter-class>过滤器的完全限定名</filter-class>
</filter>
<filter-mapping>
<filter-name>过滤器名</filter-name>
<url-pattern>过滤器映射的web资源</url-pattern>
<filter-mapping>
java.lang.IllegalArgumentException: Control character in cookie value or attribute.