Request需要掌握
乱码问题解决方案:
- 所有能设置编码的地方都统一设置 : 数据库,数据库字段,Servlet程序,请求,响应 , 前端,浏览器。
JSP取得项目的路径
${pageContext.request.contextPath}
Request对象
package com.wu.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 RequestDemo01 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(request.getContextPath());
System.out.println(request.getRequestURI());
System.out.println(request.getRemoteUser());
System.out.println(request.getRequestedSessionId());
System.out.println(request.getServletPath());
System.out.println(request.getLocalAddr());
System.out.println(request.getLocalName());
System.out.println(request.getLocalPort());
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
### Request对象接收前端用户提交的参数
1. 写前端注册页面
- 表单的提交方式 get/post
- 表单提交的位置 action:服务项目的路径/servlet对应的请求url
```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册</title>
</head>
<body>
<%--
JSP的注释
--%>
<%--
Form表单
action:代表要提交的路径,表单要提交到哪里 ,可以提交到一个Servlet
method: 提交表单的方式
--%>
<h1>注册</h1>
<form action="${pageContext.request.contextPath}/r2" method="post">
<p>用户名:<input type="text" name="username"></p>
<p>密码:<input type="password" name="password"></p>
<p>
<input type="submit">
<input type="reset">
</p>
</form>
</body>
</html>
```
2. 写处理前端提交信息的Servlet
- 接收前端传递的控件信息, request.getParameter(“控件的name‘);
```java
package com.wu.servlet;
import javax.print.attribute.HashPrintRequestAttributeSet;
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 RequestDemo02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
if (username.equals("admin")&&password.equals("1234567")){
System.out.println("登录成功!");
}else {
System.out.println("登录失败!");
}
System.out.println(username);
System.out.println(password);
}
}
```
3. 配置web.xml
- 配置对应的XML文件
```xml
<servlet>
<servlet-name>RequsetDemo02</servlet-name>
<servlet-class>com.kuang.servlet.RequestDemo02</servlet-class>
</servlet>
<!--=====================================================-->
<servlet-mapping>
<servlet-name>RequsetDemo02</servlet-name>
<url-pattern>/r2</url-pattern>
</servlet-mapping>
```
4. 提交测试
- 检查英文提交情况,服务器是否接收成功!
- 提交中文,看看乱码情况
- 设置编码统一,解决乱码问题;
### Request实现请求转发
```java
package com.wu.servlet;
import javax.servlet.RequestDispatcher;
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 FormServlet1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println("接收到的用户名:"+username+"\n密码:"+password+"\n爱好:");
String[] hobbies = req.getParameterValues("hobby");
for (String hobby : hobbies) {
System.out.println(hobby);
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
req.getRequestDispatcher("/success.jsp").forward(req,resp);
}
}