
J2EE学习笔记(四)之Servlet原理
2.新建一个登录界面
3.新建一个欢迎跳转页面
发布日期:2021-05-10 11:43:48
浏览次数:22
分类:精选文章
本文共 2772 字,大约阅读时间需要 9 分钟。
一、Servlet简介
Servlet是JSP的核心技术,它是服务器端小程序,用于处理客户端的HTTP请求。通过继承HttpServlet
类,Servlet可以实现对HTTP协议方法(如GET、POST、PUT等)的响应处理。
Servlet的主要特点
- 生命周期管理:Servlet的生命周期由Web容器管理,创建和销毁由容器控制。
- 方法重写:通常只需要重写
doGet()
和doPost()
方法,或者通过service()
方法统一处理所有请求。 - 多线程支持:Web容器会默认支持Servlet的多线程处理,提升吞吐量。
二、案例
1.新建一个Maven项目
在项目目录下右键新建模块,选择“Maven项目”,填写项目信息并添加必要的依赖:
javax.servlet servlet-api 2.4 provided javax.servlet.jsp jsp-api 2.1 provided
2.新建一个登录界面login.jsp
ARE氏<% page language="java" pageEncoding="UTF-8"%>登录界面
3.新建一个欢迎跳转页面welcome.jsp
<% page language="java" pageEncoding="UTF-8"%>欢迎界面 亲爱的<%=session.getAttribute("name") %>:你好!欢迎登录!
4.新建一个Servlet类
package com.example;import java.io.IOException;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String pwd = request.getParameter("pwd"); HttpSession session = request.getSession(); session.setAttribute("name", username); RequestDispatcher rd = request.getRequestDispatcher("/welcome.jsp"); rd.forward(request, response); }}
5.将Servlet配置在Web应用中
在web.xml
中配置Servlet:
loginServlet com.example.LoginServlet loginServlet /login
三、Servlet的生命周期
Servlet的生命周期关键点
Servlet实例的创建:
- 客户端首次请求时,Web容器创建Servlet实例。
- 在Web应用启动时,通过
load-on-startup
指定的优先级创建实例。
初始化阶段:
- Web容器调用
init()
方法,完成Servlet的初始化配置。 - 初始化完成后,Servlet进入待命状态,等待客户端的请求。
响应处理阶段:
- 每当接收到客户端的HTTP请求,Web容器调用Servlet的
service()
方法。 - 根据请求方法(如GET、POST)调用对应的处理方法(如
doGet()
、doPost()
)。
销毁阶段:
- Web应用关闭时,Web容器调用
destroy()
方法,释放Servlet资源。 - Servlet进入销毁状态,等待新的请求。
四、load-on-startup
load-on-startup的作用
- 优先级决定:
load-on-startup
属性值越小,优先级越高。当多个Servlet竞争资源时,优先级高的会优先加载。 - 配置方式:
- 在
web.xml
中配置:必填 优先级数值 - Servlet类中使用注释配置:
@WebServlet(name="loginServlet", urlPatterns="/login", loadOnStartup=1)
示例
一种可能的web.xml
配置:
appServlet org.springframework.web.servlet.DispatcherServlet 2
通过以上步骤,可以合理配置Servlet的生命周期和启动优先级,确保Web应用按需加载管理资源,提升整体性能。