用Servlet完成登录功能
Servlet
初识servlet
servlet做了什么
- 本身不做任何业务处理
- 只是接收请求并决定调用哪个JavaBean去处理请求
- 确定用哪个页面来显示处理返回的数据
servlet是什么
- Server+Applet,是一种服务器端的Java应用程序
- 只有当一个服务器端的程序使用了Servlet API的时候,这个服务端的程序才能称之为Servlet。
servlet与jsp
servlet API
主要API
- javax.servlet.Servlet接口:
⚫所有Java Servlet的基础接口类,规定了必须由Servlet具体类实现的方法集 - javax.servlet.GenericServlet类
⚫是Servlet的通用版本,是一种与协议无关的Servlet - javax.servlet.http.HttpServlet类
⚫在GenericServlet基础上扩展的基于Http协议的Servlet
创建一个servlet的三种方法
- 创建类实现javax.servlet.Servlet接口
- 创建类继承javax.servlet.GenericServlet类
- 创建类继承javax.servlet.http.HttpServlet类
servlet的主要方法
- init(): Servlet的初始化方法,仅仅会执行一次
- service(): 处理请求和生成响应
- destroy(): 在服务器停止并且程序中的Servlet对象不再使用的时候调用,只执行一次
- ServletRequest
⚫封装客户的请求信息
⚫作用相当于JSP内置对象request - ServletResponse
⚫创建响应信息,将处理结果返回给客户端
⚫作用相当于JSP内置对象response - ServletConfig: 包含了servlet的初始化参数信息
servlet的生命周期
生命周期 | 谁来做 | 何时做 |
---|
实例化 | servlet容器 | 当Servlet容器启动或者容器检测到客户端请求时 |
初始化 | servlet容器 | 实例化后,容器调用Servlet的init()初始化对象 |
处理请求 | servlet容器 | 得到客户端请求并做出处理时 |
销毁 | servlet容器 | 当程序中的Servlet对象不再使用的时候,或者Web服务器停止运行的时候 |
servlet配置
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>com.ishopn.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
代码实现
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
// 从表单 获取数据
String userName=req.getParameter("userName");
String userPassword=req.getParameter("userPassword");
if("jack".equals(userName) && "333".equals(userPassword)) {
//cookie
Cookie cookie=new Cookie("userName",userName);
cookie.setMaxAge(60*5);
resp.addCookie(cookie);
//session 在servlet中 是问req拿的
HttpSession session=req.getSession();
session.setAttribute("userName", userName);
resp.sendRedirect("/web05/welcome.jsp");
}else {
resp.sendRedirect("/web05");
}
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}