1.创建web项目,部署到tomcat服务器中
2.在index.jsp首页中添加一个a标签,跳转到登录页面
3.创建一个login.jsp作为登录页面,书写form表单指定提交地址和提交方式
4.在web.xml中配置servlet的映射关系
5.创建一个Java类继承HttpServlet,在doPost中获取请求参数
package com.wen.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class Login extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Login....doGet");
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Login...doPost");
//req用来处理请求 resp用来处理响应
//获取请求地址的四个方法
String requestURI = req.getRequestURI();//项目名称/资源名称
StringBuffer requestURL = req.getRequestURL();//完整的请求地址
String contextPath = req.getContextPath();//项目名称
String servletPath = req.getServletPath();//资源名称
System.out.println(requestURI);
System.out.println(requestURL);
System.out.println(contextPath);
System.out.println(servletPath);
//1.获取请求的参数:根据请求参数的name属性获取提交的值
req.setCharacterEncoding("utf-8");//设置请求的编码格式
String user = req.getParameter("user");
String pwd = req.getParameter("pwd");
System.out.println("=============");
System.out.println(user);
System.out.println(pwd);
//2.根据输入的用户名和密码执行数据库的查询
//使用假登录
resp.setCharacterEncoding("utf-8");//设置响应的编码格式
resp.setContentType("text/html;charset=UTF-8");//设置响应的格式为:文本/html;中文编码
if(user.equals("张三") && pwd.equals("666")){
//3.做出响应
//登录成功
resp.getWriter().println("<h2>成功!</h2>");//获取响应的输出字符流,向前端打印内容
}else{
//登录失败
resp.getWriter().println("失败!");
}
}
}
1.Servlet容器接收到来自客户端的HTTP请求后,容器会针对该请求分别创建一个HttpServletRequest 对象和 HttpServletReponse 对象。
2.容器将 HttpServletRequest 对象和 HttpServletReponse 对象以参数的形式传入service()(或者doGet()/doPost())方法内,并调 用该方法。
3.在service()(或者doGet()/doPost())方法中Servlet 通过 HttpServletRequest 对象获取客户端信息以及请求的相关信息。
4.对HTTP请求进行处理。
5.请求处理完成后,将响应信息封装到 HttpServletReponse 对象中。
6.Servlet容器将响应信息返回给客户端。
7.当Servlet 容器将响应信息返回给客户端后,HttpServletRequest对象和HttpServletReponse对象被销毁。
-
HttpServletRequest接口
在Servlet API中,定义了一个HttpServletRequest 接口,它继承自 ServletRequest 接口。HttpServletRequest 对象专门用于封装 HTTP 请求消息,简称 request对象。
HTTP 请求消息分为请求行、请求消息头和请求消息体三部分,所以HttpServletRequest接口中定义了获取请求行、请求头和请求消息体的相关方法。
获取请求行信息
HTTP请求的请求行中包含请求方法、请求资源名、请求路径等信息,HttpServletRequest接口定义了一系列获取请求行信息的方法
返回值类型 | 方法声明 | 描述 |
String | getMethod() | 该方法用于获取HTTP请求方式(如GET、POST等)。 |
String | getRequestURI() | 该方法用于获取请求行中的资源名称部分,即位于 URL的主机和端口之后,参数部分之前的 部分。 |
String | getQueryString() | 该方法用于获取请求行中的参数部分,也就是 URL 中“?”以后的所有内容。 |
-
HttpServletResponse接口
它继承自ServletResponse接口,作用是封装HTTP响应消息。
由于HTTP响应消息分为状态行,响应消息头,消息体三部分,所以在HttpServletResponse接口中定义了发送这三种消息的方法:
1.发送状态行相关方法:
- setStatus(int status)方法
该方法用于设置HTTP响应消息的状态码,并生成响应状态行。
正常情况下,Web服务器默认产生一个状态码为200的状态行。
- sendError(int sc)方法
该方法用于发送表示错误信息的状态码。
2.发送响应消息头的相关方法:
HttpServletResponse 接口中定义了一系列设置 HTTP 响应头字段的方法
返回值类型 | 方法 | 描述 |
void | addHeader(String name,String value) | 用于增加响应头字段,其中,参数 name 用于指定响应头字段的名称,参数 value 用于指定响应头字段的值。 |
void | setHeader (String name,String value) | 用于设置响应头字段,其中,参数 name 用于指定响应头字段的名称,参数 value 用于指定响应头字段的值。 |
void | addIntHeader(String name,int value) | 用于增加值为 int 类型的响应头字段,其中,参数 name 用于指定响应头字段的名称,参数 value 用于指定响应头字段的值,类型为 int。 |
void | setIntHeader(String name, int value) | 用于设置值为 int 类型的响应头字段,其中,参数 name 用于指定响应头字段的名称,参数 value 用于指定响应头字段的值,类型为 int。 |
void | setContentType(String type) | 用于设置 Servlet 输出内容的 MIME 类型以及编码格式。 |
void | setCharacterEncoding(String charset) | 用于设置输出内容使用的字符编码。 |
3.发送响应消息体相关方法:
在HTTP响应消息中,大量的数据都是通过响应消息体传递
返回值类型 | 方法声明 | 描述 |
ServletOutputStream | getOutputStream() | 用于获取字节输出流对象 |
PrintWriter | getWriter() | 用于获取字符输出流对象 |
注意:getOutputStream()和getWriter()方法互相排斥,不可同时使用,否则会发生 IllegalStateException 异常