servlet使用原理

当服务器接收一个客户端请求时,需要做一下四件事情。

(1) 加载和实例化
如果Servlet容器还没实例化一个Servlet对象,此时容器装载和实例化一个 Servlet。创建出该 Servlet 类的一个实例。如果已经存在一个Servlet对象,此时不再创建新实例。

(2) 初始化
在产生 Servlet 实例后,容器负责调用该 Servlet 实例的 init() 方法,在处理用户请求之前,来做一些额外的初始化工作。

(3) 处理请求
Servlet 容器接收到一个 Servlet 请求时,便运行与之对应的 Servlet 实例的 service() 方法,service() 方法根据用户的请求调用相对应的doGetdoPost 方法来处理用户请求。然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。

(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值