Servlet的执行流程和生命周期
Servlet的执行流程
首先是浏览器地址:
http://IP+端口号/Servlet映射的名称
然后看一个web的xml文件
web.xml
<servlet> <servlet-name>MyServletservlet-name> <servlet-class>cn.dl.servlet.LoginServletservlet-class> servlet> <servlet-mapping> <servlet-name>MyServletservlet-name> <url-pattern>/msurl-pattern> servlet-mapping>
servlet的执行流程:
1.从url-pattern开始,url-pattern是servlet的映射的名称
2.servlet-mapping中的servlet-name,这个servlet-name要与
3.通过servlet-name找到对应的servlet-class地址,通过反射的方式执行service()方法
另外:3.0之后的版本可以使用@WebServlet注解,而不需要配置web.xml
配置注解步骤:
- 创建java web项目,选择servlet版本3.0以上的,可以不创建web.xml文件
- 定义一个类,实现Servlet接口
- 重写方法
- 在类上使用注解@WebServlet("资源路径")进行配置
例如:
login.html
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<base href="http:localhost:8080/"/>
head>
<body>
<form action="/Login" method="post">
用户名:<input type="text" name="username"/><br>
密 码:<input type="password" name="password" /><br>
登录:<input type="submit" value="登录" />
form>
body>
html>
RegisterServlet.jsp
@WebServlet("/Login") public class LoginServletH extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("username:"+username); System.out.println("password:"+password); } }
Servlet的生命周期
1.被创建:执行init()方法,只执行一次
2.提供服务:执行service()方法,执行多次方法
3.被销毁:执行destroy()方法,只执行一次