servlet简介

来源:互联网 发布:阿里云 广东省银监会 编辑:程序博客网 时间:2024/06/12 12:01

servlet类简介

servlet类通过init () 方法进行初始化,service() 方法来处理客户端的请求,destroy() 方法终止(结束)。最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
而常见的doGet、doPost、doPut、doDelete 等方法都是隶属于service中的一种。
下面是一个最简单的servlet类(不通过注释)

public class HelloServle extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException    {        response.setContentType("text/html;charset=UTF-8");        PrintWriter out = response.getWriter();        String title = "第一个Servlet程序";        String docType = "<!DOCTYPE html>\n";        String word="Hello Servlet";        out.println(docType +                "<html><head><title>" + title + "</title></head><body><h1 align='center'>" + word + "</h1></body></html>");        }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        doGet(request, response);    }}

该servlet需要在web.xml上进行配置才能使用

<web-app>          <servlet>        <servlet-name>HelloServle</servlet-name>        <servlet-class>HelloServle</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>HelloServle</servlet-name>        <url-pattern>/hello/HelloServle</url-pattern>    </servlet-mapping></web-app>  

其中url-pattern是servlet在服务器上显示的名字
这里写图片描述
不过以上是在servlet3.0之前的一般用法,在web3.0之后,一般来说创建得web项目里面没有web.xml文件(需要自己编写),但同时,其中大部分的需要配置的部分都可以使用@Annotation(此时需要web.xml中的版本号高于3.0)进行配置
如上面的代码,若是使用@Annotation进行配置使用的话,只需要在类前面加上@WebServlet(“/hello/HelloServlet”)就会在没有使用web.xml进行配置的同时达到同样的效果。
此时另外写个相似的类进行示例
示例如下:

@WebServlet("/helloServlet/HelloServlet")public class HelloServletForAnnotation extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException    {            response.setContentType("text/html;charset=UTF-8");        PrintWriter out = response.getWriter();        String title = "第一个Servlet程序(注释版本)";        String docType = "<!DOCTYPE html>\n";        String word="Hello Servlet For Annotation";        out.println(docType +                "<html><head><title>" + title + "</title></head><body><h1 align='center'>" + word + "</h1></body></html>");        }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        doGet(request, response);    }}

产生效果如下:
这里写图片描述
同时,类似于servlet的filter文件也可以使用注释进行配置,使用的配置代码为@WebFilter(“”)
不过需要注意@WebServlet(“path”)中的path以及web.xml中的url-pattern中填写路径时需要前面加上/,比如路径名为hello,那最终写的时候不该是@WebServlet(“hello”)而该是@WebServlet(“/hello”),否则会报错
这里写图片描述

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/项目名]]

原创粉丝点击