一、Servlet基础
a) Servlet和JSP的关系
1、 Servlet是一个运行在服务器端的Java程序,它可以动态地生成web页面,是属于客户和服务器响应的中间层。可以说JSP就是一个Servlet。
2、 Servlet是JSP的底层实现;实际上,在运行JSP时,服务器底层将JSP编译成一个Servlet。
3、 Servlet适合纯编程,和Servlet相比,编写JSP成本更低。
b) Servlet的编写
1、 继承javax.servlethttp.HttpServlet;
2、 重写HttpServlet的doGet()和doPost()方法
doGet()和doPost()方法使用来处理业务逻辑上。
3、 在web.xml中配置Servlet
<servlet>
<servlet-name>Servlet名</servlet-name>
<servlet-class>Servlet类路径</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet名</servlet-name>
<url-pattern>映射路径</url-pattern>
</servlet-mapping>
<servlet>和<servlet-mapping>中配置的<servlet-name>要一致才能制定此两项配置是同一个Servlet。
4、 部署Servlet
c) Servlet的运行机制
初次运行Servlet时实例化Servlet
Servlet采用多线程机制,首次执行时实例化,当有多个用户请求时创建多个线程,每次请求时执行doGet()或doPost()方法。
d) Servlet的生命周期
init()方法:Servlet实例化过程中将会调用此方法。
doGet()/doPost()/service()方法:当用户请求Servlet时会调用service方法,service方法会根据请求类型去调用doGet()或doPost()方法。
destroy()方法:Servlet实例消亡时自动调用此方法。
e) Servlet与JSP内置对象
1、 JSP的request对象---HttpServletRequest
2、 JSP的response对象---HttpServletResponse
3、 JSP的out对象---Servlet的(PrintWriter)response.getWriter()
4、 JSP的session对象---Servlet的(HttpSession)resquest.getSession()
5、 JSP的application对象---Servlet的(ServletContext)this.getServletContext()
f) Servlet参数读取和web.xml的参数配置
1、 web.xml文件参数配置
a) 全局参数配置:所有的Servlet都能访问
全局参数配置在web.xml的最上面,格式为:
<context-param>
<param-name>参数名</param-name>
<param-value>参数值</param-value>
</context-param>
b) 局部参数配置:只有相应的Servlet才能访问
配置格式为:
<servlet>
<servlet-name>Servlet名称</servlet-name>
<servlet-class>Servlet类路径</servlet-class>
<init-param>
<param-name>参数名</param-name>
<param-value>参数值</param-value>
</init-param>
</servlet>
2、 Servlet获取参数
a) 获取全局参数
ServletContext application = this.getServletContext();
Application.getInitParameter(“参数名”);
b) 获取局部参数
this.getInitParameter(“参数名”);
二、Servlet高级
a) Servlet页面跳转
1、 Servlet重定向
使用response.sendRedirect(url)
页面重定向到一个新的页面,同JSP中的response.sendRedirect();
2、 Servlet服务器跳转
ServletContext application = this.getServletContext()
RequestDispatcher rd=application.getRequestDispatcher(url)
rd.forword(request,response);
该方式同JSP中的<jsp:forword page=””></jsp:forward>
b) ServletContext高级功能:(application对象)
获取当前项目资源的绝对路径信息:使用getRealPath()