当服务器接收一个客户端请求时,需要做一下四件事情。
(1) 加载和实例化
如果Servlet
容器还没实例化一个Servlet对象,此时容器装载和实例化一个 Servlet。创建出该 Servlet
类的一个实例。如果已经存在一个Servlet对象,此时不再创建新实例。
(2) 初始化
在产生 Servlet
实例后,容器负责调用该 Servlet 实例的 init()
方法,在处理用户请求之前,来做一些额外的初始化工作。
(3) 处理请求
当 Servlet
容器接收到一个 Servlet 请求时,便运行与之对应的 Servlet 实例的 service()
方法,service()
方法根据用户的请求调用相对应的doGet
或doPost
方法来处理用户请求。然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。
(4) 销毁
当 Servlet
容器决定将一个 Servlet 从服务器中移除时 ( 如 Servlet 文件被更新 ),便调用该 Servlet 实例的 destroy()
方法,在销毁该 Servlet 实例之前,来做一些其他的工作。
其中,(1)(2)(4) 在 Servlet 的整个生命周期中只会被执行一次。
package web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.catalina.connector.OutputBuffer;
public class regServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
**req.setCharacterEncoding("utf-8");**
System.out.println(req.getParameter("username"));
System.out.println(req.getParameter("pwd"));
System.out.println(req.getParameter("sex"));
String[] interests=req.getParameterValues("interest");
for (int i = 0; i < interests.length; i++) {
System.out.println(interests[i]);
}
**res.setContentType("text/html;charset=utf-8");//res.setCharacterEncoding="utf-8"**
PrintWriter out=res.getWriter();
out.println("<p>注册成功!!</p>");
out.close();
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="reg" method="post">
<p>
名字:<input type="text" name="username">
</p>
<p>
密码:<input type="password" name="pwd">
</p>
<p>
性别:
<input type="radio" name="sex" value="male">男
<input type="radio" name="sex" value="female">女
</p>
<p>
兴趣:
<input type="checkbox" name="interest" value="baskerball">打篮球
<input type="checkbox" name="interest" value="running">跑步
<input type="checkbox" name="interest" value="girls-hunter">泡妞
</p>
<p>
<input type="submit" value="注册">
</p>
</form>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>servlet02</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
**<servlet>
<servlet-name>reg</servlet-name>
<servlet-class>web.regServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>reg</servlet-name>
<url-pattern>/reg</url-pattern>
</servlet-mapping>**
</web-app>
部分摘取内容https://blog.csdn.net/gaosilingqwer/article/details/79865802