对Servlet的认识

注明 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
图片摘自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

扫描二维码关注公众号,回复: 5011274 查看本文章
//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入门。

猜你喜欢

转载自blog.csdn.net/zonkidd/article/details/83474113