zoukankan      html  css  js  c++  java
  • jspServlet2.5和Servlet3的区别

    1.纯手工方法创建第一个Servlet
    步骤:
    编写一个类,继承HttpServlet
    重写doGet()、doPost()方法
    编写web.xml 中的servlet映射关系

    2.借助于Eclipse快速生成Servlet
    直接新建Servlet即可!(继承、重写、web.xml 可以借助Eclipse自动生成)
    在这里插入图片描述
    在这里插入图片描述
    可以在web.xml下看到直接生成配置文件

    <servlet>
        <description></description>
        <display-name>WelcomeServlet2</display-name>
        <servlet-name>WelcomeServlet2</servlet-name>
        <servlet-class>com.xdr.servlet.WelcomeServlet2</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>WelcomeServlet2</servlet-name>
        <url-pattern>/WelcomeServlet2</url-pattern>
      </servlet-mapping>
    

    在webcontext下看index.jsp请求什么(如:WelcomeServlet),创建的Servlet就用请求名(WelcomeServlet)来作为Servlet的类名,因为大多数Servlet的name都是和请求映射的名一样的。
    在这里插入图片描述

    创建Servlet3.0时,有的时候会找不到web.xml配置文件,以下有两种解决方法:


    创建时勾选。

    • 如果不勾选也可以等项目创建好了,在进行如下操作:
      右击项目->Java EE Tools->Generate Deplyment Descriptor Stub 后就会生成web.xml文件

    Servlet3.0,与Servlet2.5的区别:

    Servlet3.0不需要在web.xml中配置,但 需要在 Servlet类的定义处之上编写 注解@WebServlet("url-pattern的值")
    匹配流程: 请求地址 与@WebServlet中的值 进行匹配,如果匹配成功 ,则说明 请求的就是该注解所对应的类
    Servlet3.0请求流程:通过请求地址去匹配@WebServlet(“url-pattern”),匹配成功后,找到该注解所属的类,找到后直接去执行里面的doGet或doPost方法
    在这里插入图片描述
    下方的这段代码就等于此注解@WebServlet("url-pattern的值")

    <servlet>
        <servlet-name>WelcomeServlet</servlet-name>
        <servlet-class>com.xdr.servlet.WelcomeServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>WelcomeServlet</servlet-name>
        <url-pattern>/WelcomeServlet</url-pattern>
      </servlet-mapping>
    

    项目根目录:WebContent、src(所有的构建路径)
    例如:
    WebContent中有一个文件index.jsp
    src中有一个Servlet.java

    如果: index.jsp中请求 ,则 寻找范围:既会在src根目录中找 也会在WebContent根目录中找

    如果:index.jsp中请求,寻找范围:先在src或WebContent中找a目录,然后再在a目录中找abc

    web.xml中的 /:代表项目根路径

    http://localhost:8888/Servlet25Project/
    

    jsp中的/: 服务器根路径

    http://localhost:8888/
    

    web.xml中的“/”代表是项目名后面的“/”,jsp的“/”代表的是项目名前面的“/ ”

    构建路径、WebContent:根目录

    4.Servlet生命周期:5个阶段
    在这里插入图片描述
    加载
    初始化: init() ,该方法会在 Servlet被加载并实例化的以后 执行
    服务 :service() ->doGet() doPost
    销毁 :destroy(), Servlet被系统回收时执行
    卸载

    Servlet执行流程案例库
    ServletTest.java

    package com.xdr.servlet;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class ServletTest
     */
    public class ServletTest extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    	
    	@Override
    		public void init() throws ServletException {
    			// TODO Auto-generated method stub
    			System.out.println("init初始化...");
    		}
    	
    	@Override
    	public void destroy() {
    		// TODO Auto-generated method stub
    		System.out.println("destroy...");
    	}
       
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		
    		System.out.println("service的具体实现(doGet...doPost...)...");
    	}
    
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		
    		doGet(request, response);
    	}
    
    }
    
    

    index2.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<a href="ServletTest">WelcomeServlet</a><br><br>
    	<form action="ServletTest" method="post">
    		<input type="submit">
    	</form>
    </body>
    </html>
    

    在这里插入图片描述
    当点击任一请求访问时,控制台输出:
    在这里插入图片描述
    关闭Tomcat时:
    在这里插入图片描述
    init():
    a.默认第一次访问 Servlet时会被执行 (只执行这一次)
    b.可以修改为 Tomcat启动时自动执行
    i.Servlet2.5: web.xml

    <servlet>
    				...
     <load-on-startup>1</load-on-startup>
    </servlet>
    其中的“1”代表第一个去执行。
    

    Tomcat启动时就会初始化init()Servlet 执行结果:
    在这里插入图片描述

    ii.Servlet3.0
    @webServlet()里只有一个参数可以省略value不写,多个参数就不能省略。

    @WebServlet( value="/WelcomeServlet" ,loadOnStartup=1  )
    

    service() ->doGet() doPost :调用几次,则执行几次
    destroy():关闭tomcat服务时,执行一次。

  • 相关阅读:
    第一次作业
    第0次作业
    第14、15周作业
    第七周作业
    第六周作业
    第四周作业
    第三周作业
    第4次作业
    第3次作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/xdr630/p/15255098.html
Copyright © 2011-2022 走看看