Java——Servlet
一、概念:
(1)把运行在服务器上的java类称为Servlet,是java的服务端编程技术;
(2)主要功能在于交互式地浏览和修改数据,生成动态Web内容;
二、Servlet生命周期:
(1)构造方法:在init之前;
(2)init:初始化,服务器启动执行一次;用于写初始化的方法;
(3)destroy:销毁;服务器关闭执行一次;
(4)service:服务方法,访问一次执行一次;不管get/post请求,直接调用service方法;
三、Servlet的三种实现方式:
(1)实现servlet接口;(爷爷)
(2)继承GenericServlet类;(爸爸)
(3)继承HttpServlet类;(儿子)
1、实现servlet接口:
@WebServlet("/test") public class Test implements Servlet { ... }
2、继承GenericServlet类:
(1)GenericServlet类是Servlet的实现类,其中service方法为空实现;
(2)继承此类创建Servlet只需重写service方法;
@WebServlet("/test") public class Test extends GenericServlet { @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("service..."); } }
3、继承HttpServlet类:
//重点使用doGet/doPost方法,不推荐使用service方法;
@WebServlet("/test") public class Test extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doGet..."); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doPost..."); } }
四、Servlet访问路径的两种配置:
1、在web.xml中配置:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet>//配置servlet <servlet-name>命名,一般和类名一致</servlet-name> <servlet-class>包名.类名</servlet-class> </servlet> <servlet-mapping>//配置servlet映射 <servlet-name>命名,和上面相同</servlet-name> <url-pattern>路径</url-pattern> </servlet-mapping> <servlet> <servlet-name>RegisterServlet</servlet-name> <servlet-class>servlet.RegisterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RegisterServlet</servlet-name> <url-pattern>/register_do</url-pattern> </servlet-mapping> </web-app>
2、注解:
(1)版本要求:jdk>=1.8;web.xml>=3.0;
(2)格式:在Servlet类上一行添加注解@WebServlet("urlParrent");
//@WebServlet("/servlet_do")
五、Servlet初始化属性配置<init-param>/<context-param>
1)web.xml配置:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>Test</servlet-name> <servlet-class>com.qf.controller.Test</servlet-class> <init-param> <param-name>initParam</param-name> <param-value>initParam</param-value> </init-param> </servlet> <context-param> <param-name>contextParam</param-name> <param-value>contextParam</param-value> </context-param> <servlet-mapping> <servlet-name>Test</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> </web-app>
2)controller:
package com.qf.controller; public class Test extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println(getServletConfig().getInitParameter("initParam")); System.out.println(getServletContext().getInitParameter("contextParam")); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }