Servlet入门开发步骤
一、创建Javaweb工程
1.选择新建工程
2.勾选创建工程模板
3.给工程命名
4.创建完成
二、Servlet代码书写以及优化
1.创建一个类实现Servlet并且重写接口的方法
package com.sss.demo;import javax.servlet.*;
import java.io.IOException;public class DemoServlet implements Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException {//这里是Servlet启动时的初始化操作,是执行一次的System.out.println("Servlet启动了");}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {//service就是核心代码了,每次访问都会执行一次System.out.println("Servlet执行了");}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {//destroy是Tomcat关闭时销毁Servlet时执行的方法System.out.println("Servlet销毁了");}
}
2.配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><!--配置一个Servlet--><servlet><!--配置Servlet的名字--><servlet-name>DemoServlet</servlet-name><!--配置Servlet的类的全名--><servlet-class>com.sss.demo.DemoServlet</servlet-class><!--Servlet生命周期是第一次访问时起开启的,但是可以通过以下方法在启动Tomcat时就启动Servlet--><!--里面输入一个整数表示Servlet的启动优先级 1表示最高--><load-on-startup>1</load-on-startup></servlet><!--配置Servlet的映射关系--><servlet-mapping><!--映射的Servlet名字--><servlet-name>DemoServlet</servlet-name><!--配置访问Servlet的路径--><url-pattern>/demoServlet</url-pattern></servlet-mapping></web-app>
3.Servlet是一个接口,我们每次需要重写很多的方法,所以我们继承GenericServlet,它是一个抽象类。所以我们是需要重写service方法即可,这是帮我们提前写好了很多方法的类。
package com.sss.demo;import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;public class DemoServlet2 extends GenericServlet {@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("Servlet执行了");}
}
4.我们发现尽管是继承了GenericServlet,只重写了service方法,但是里面还是书写起来很麻烦。因为有多种应用协议,然而我们需要的是一个HTTP协议的操作,所以就使用了HttpServlet来解决这个问题。我们只要重写里面的doGet和doPost最常用的两种请求方法即可。
package com.sss.demo;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class DemoServlet3 extends HttpServlet{@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("DemoServlet3.doPost");}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("DemoServlet3.doGet");}
}
5.我们写了几个案例发现了一个严重的问题,那就是web.xml里面非常多的配置,特别的繁琐。所以我们可以使用注解开发。
package com.sss.demo;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet(name = "DemoServlet4",urlPatterns = "/demoServlet4")
public class DemoServlet4 extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("DemoServlet4.doGet");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("DemoServlet4.doPost");}
}
6.现在Servlet已经简化了好了,但是每次创建之后要继承还要手写注解,还是不够简单,所以我们配合模板开发
a.打开File->setting->Editor->File and Code Templates->Other->Web->Java Code Templates->Servlet Annotated Class.java
b.将里面的内容更换成以下内容
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
@javax.servlet.annotation.WebServlet(urlPatterns = "/${Entity_Name}",name = "${Entity_Name}")
public class ${Class_Name} extends javax.servlet.http.HttpServlet {protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {}protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {doPost(request,response);}
}
c.创建模板开始写代码
d.创建好的样子
package com.sss.demo;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet(urlPatterns = "/DemoServlet5", name = "DemoServlet5")
public class DemoServlet5 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}