注明 Servlet的特征摘自博客地址:https://blog.csdn.net/qq_37024565/article/details/80682702 作者:你微笑时很美12138
什么是Servlet
Servlet(Servlet Applet),全称Java Servlet,是用Java编写的服务器端程序。而这些Servlet都要实现Servlet这个接口。其主要功能在于交互式的浏览和修改数据,生成动态Web内容。Servlet运行于支持Java的应用服务器中。
Servlet本质就是javax.servlet包下的一个接口,广义上来说包含其子接口与实现类,像我们自己写的什么BaseServlet,LoginServlet;SpringMVC的Dispatcherservlet;Tomcat的HttpServlet都是Servlet。
Servlet的访问流程
图片摘自https://blog.csdn.net/qq_37024565/article/details/80682702
Servlet的特征
1.Servlet是单例多线程的,只创建一个servlet对象,但是每次请求都会起一个线程并在自己线程栈内存中执行service方法。
2.一个 Servlet 实例只会执行一次无参构造器与 init()方法,并且是在第一次访问时执行。
用户每提交一次对当前 Servlet 的请求,就会执行一次 service()方法。
3.一个 Servlet 实例只会执行一次 destroy()方法,在应用停止时执行。
4.由于 Servlet 是单例多线程的,所以为了保证其线程安全性,一般情况下是不建议在 Servlet类中定义可修改的成员变量,因为每个线程均可修改这个成员变量,会出现线程安全问题。
5.默认情况下,Servlet 在 Web 容器启动时是不会被实例化的。
Servlet简单应用
Login.html
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="LoginServlet">
用户名:<input type="text" name="username"> <br>
密 码:<input type="password" name="password"> <br>
<input type="submit" value="登录">
</form>
</body>
</html>
web.xml
//web.xml 配置Servlet
<servlet>
<description></description>
<display-name>LoginServlet</display-name>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.atguigu.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
LoginServlet.java
//Servlet
package com.atguigu.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 LoginServlet
*/
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取用户参数
String name = request.getParameter("username");
String password = request.getParameter("password");
//判断用户是否存在
if("admin".equals(name)&&"123456".equals(password)){
// request.getRequestDispatcher("success.html").forward(request, response);
//登录成功,重定向到成功页面
response.sendRedirect("success.html");
}else{
//登录失败 转发到失败页面
request.getRequestDispatcher("error.html").forward(request, response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
学到Servlet这里,时常感到迷茫,老是在想 Servlet是什么。只知道应该这么用,属性和方法是什么,但是不了解Servlet的本质,Servlet的原理。
仅以此博客,做一个小小的Servlet入门。