目录
servlet简介
servlet本质上是一个java类,可以通过servlet来实现java类和jsp类之间的数据互通,
而且它可以直接减少webapp下的多个jsp类,使项目形成高内聚,低耦合的特性
servlet的生命周期
- 通过xml配置找到servlet类
- 第一次进入servlet会调用init()方法进行初始化
- 初始化后可以调用service()进行数据处理,也可以调用getServletConfig()获得服务配置,或者调用getServletinfo()方法获得服务信息
- 当你关闭Tomcat或修改servlet时就会调用destroy()方法进行销毁
具体操作
新建登录界面login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="test.do" >
<p><input type="text" name="userName"></p>
<p><input type="text" name="password"></p>
<p><button>登录</button></p>
</form>
</body>
</html>
新建servlet类servlet.java
package com.zking.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.HttpCookie;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.websocket.Session;
import com.sun.net.httpserver.HttpContext;
public class Servlet implements javax.servlet.Servlet{
@Override//销毁
public void destroy() {
// TODO Auto-generated method stub
System.out.println("销毁");
}
@Override//初始化
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
System.out.println("第一次进来");
}
@Override//获得服务
public void service(ServletRequest req, ServletResponse rep) throws ServletException, IOException {
HttpServletResponse respon=(HttpServletResponse)rep;//将父类响应强转为子类
HttpServletRequest request=(HttpServletRequest)req;//将父类请求强转为子类
String userName=req.getParameter("userName");
String password=req.getParameter("password");
req.setCharacterEncoding("utf-8");//将接收的数据改为支持汉字编码
respon.setCharacterEncoding("gb2312");//将打印在页面的数据改为支持汉字编码
PrintWriter out=respon.getWriter();//通过响应对象获取了输出对象
HttpSession session = request.getSession(); //通过请求获得session的值,一定要先请求的类型
ServletContext application=request.getServletContext();//通过请求获得application的值,一定要先请求的类型
if("root".equals(userName)&&"root123".equals(password)) {
out.print("登陆成功");
}else {
out.print("登录失败");
}
}
@Override//获得服务配置
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override//获得服务信息
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
}
配置xml服务
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>web13</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>myServlet</servlet-name><!-- 给servlet取别名 -->
<servlet-class>com.zking.servlet.Servlet</servlet-class><!--需要调用servlet的包名加类名 -->
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/do.login</url-pattern><!-- 映射到Tomcat上 -->
</servlet-mapping>
</web-app>