前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jsp---Servlet2.5和Servlet3的区别

jsp---Servlet2.5和Servlet3的区别

作者头像
兮动人
发布2021-06-11 11:21:11
5970
发布2021-06-11 11:21:11
举报
文章被收录于专栏:兮动人的博客

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

2.借助于Eclipse快速生成Servlet 直接新建Servlet即可!(继承、重写、web.xml 可以借助Eclipse自动生成)

可以在web.xml下看到直接生成配置文件

代码语言:javascript
复制
<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的值")

代码语言:javascript
复制
<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中的 /:代表项目根路径

代码语言:javascript
复制
http://localhost:8888/Servlet25Project/

jsp中的/: 服务器根路径

代码语言:javascript
复制
http://localhost:8888/

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

构建路径、WebContent:根目录

4.Servlet生命周期:5个阶段

加载 初始化: init() ,该方法会在 Servlet被加载并实例化的以后 执行 服务 :service() ->doGet() doPost 销毁 :destroy(), Servlet被系统回收时执行 卸载

Servlet执行流程案例库 ServletTest.java

代码语言:javascript
复制
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

代码语言:javascript
复制
<%@ 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

代码语言:javascript
复制
<servlet>
				...
 <load-on-startup>1</load-on-startup>
</servlet>
其中的“1”代表第一个去执行。

Tomcat启动时就会初始化init()Servlet 执行结果:

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

代码语言:javascript
复制
@WebServlet( value="/WelcomeServlet" ,loadOnStartup=1  )

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建Servlet3.0时,有的时候会找不到web.xml配置文件,以下有两种解决方法:
  • Servlet3.0,与Servlet2.5的区别:
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档