servlet
简介:
servlet就是sun公司开发动态web的一门技术
servlet用于接收及相应前端发送的请求,可以再同一个servlet中处理多个请求,也可以定义返回的数据类型
servlet的开发流程 :
- 编写一个java类,继承HttpServlet类
- 重写HttpServlet类的doGet方法和doPost方法
- 配置web.xml文件,或者使用注解对servlet进行配置
对servlet进行配置:
使用web.xml文件配置
<webapp>
<!-- 配置一个servlet -->
<!-- servlet的配置 -->
<servlet>
<!-- servlet的内部名称,自定义。尽量有意义 -->
<servlet-name>MyServlet</servlet-name>
<!-- servlet的类全名: 包名+简单类名 -->
<servlet-class>com.yunhe.servlet.FirstServlet</servlet-class>
</servlet>
<!-- servlet的映射配置 -->
<servlet-mapping>
<!-- servlet的内部名称,一定要和上面的内部名称保持一致!! -->
<servlet-name>MyServlet</servlet-name>
<!-- servlet的映射路径(访问servlet的名称) -->
<url-pattern>/first</url-pattern>
</servlet-mapping>
</webapp>
Servlet的生命周期:
- 初始化阶段(一次)
Servlet容器加载Servlet,加载完成后,Servlet容器会创建一个Servlet实例并调用init()方法,init()方法只会调用一次
- 处理客户端请求阶段(执行(多次))
每收到一个客户端请求,服务器就会产生一个新的线程去处理。
- 终止阶段(销毁(一次))
当web应用被终止,或者Servlet容器终止运行,或者Servlet重新装载Servlet新实例时,Servlet容器会调用Servlet的destroy()方法
案例:
创建一个前端登录表单login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>roobtyan登录控制系统</title>
</head>
<body>
<h1 align="center" style="color: red;">欢迎您登录系统后台</h1><hr/>
<%--the form start--%>
<div align="center">
<form method="post" action="/login">
Username:<input type="text" name="username"/><br/><br/>
Password:<input type="password" name="password"/><br/><br/>
<input type="submit" value="登录"/>
</form>
</div>
</body>
</html>
创建一个登录成功页面welcome.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>欢迎页面</title>
</head>
<body>
<h1 align="center" style="color: red">Welcome:</h1>
<%
out.println(session.getAttribute("user"));
%>
<hr/>
<span style="align:center; color:yellow">
Time:<%
out.println(new Date());
%>
</span>
</body>
</html>
创建LoginServlet.java
public class LoginServlet extends HttpServlet {
public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
//设置字符编码
request.setCharacterEncoding("utf8");
//从request对象中获取username,password
String username = request.getParameter("username");
String password = request.getParameter("password");
//判断是否为管理员
if("administrator".equals(username)&&"123456".equals(password)){
//登录成功,设置session
HttpSession session = request.getSession(true);
session.setAttribute("user", "管理员,欢迎你!");
}else {
session.setAttribute("user","登录信息错误,请检查用户名或密码");
}
//将页面转发到欢迎页面
requestDispatcher = request.getRequestDispatcher("/welcome.jsp");
requestDispatcher.forward(request,response);
}
}
配置servlet
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.yunhe.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>