获取请求参数的方法都写在了ServletRequest类中
ServletRequest.java:
package com.example.servlet_test; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Arrays; /** * @author 兴趣使然黄小黄 * @version 1.0 * 读取表单数据 */ public class ServletRequest extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取请求参数 String username = req.getParameter("username"); String password = req.getParameter("password"); String[] hobby = req.getParameterValues("hobby"); //打印 System.out.println("用户名:" + username); System.out.println("密码:" + password); System.out.println("爱好:" + Arrays.asList(hobby)); } }
2.4 解决post请求中的中文乱码问题
提交后,控制台获取的参数信息如下;
用户名中文出现了乱码!如何解决?
只需要在获取参数前设置编码格式为utf-8即可
req.setCharacterEncoding(“UTF-8”):设置请求体的字符集为UTF-8,从而解决post请求的中文乱码问题。
3 请求转发
何为请求转发?
请求转发是指当服务器接收到请求后,从一个资源跳转到另一个资源的操作。
请求转发的特点如下:
- 浏览器地址不会变化
- 仅仅是一次请求
- 可以共享Request域的数据
- 可以转发到 WEB-INF 目录(一般情况无法访问,可以通过请求转发访问)
- 不可以访问到工程以外的资源
示例代码如下:(xml配置文件略,可以自己参考类名去配置)
public class Servlet1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取请求的参数 String username = req.getParameter("username"); System.out.println("servlet1中 username = " + username); //给材料盖章,传递到servlet2查看 req.setAttribute("key1", "柜台1的章"); //问路:servlet2怎么走 RequestDispatcher requestDispatcher = req.getRequestDispatcher("/servlet2"); //走向Servlet2 requestDispatcher.forward(req, resp); } } public class Servlet2 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取请求参数 String username = req.getParameter("username"); System.out.println("servlet2中 username = " + username); //查看柜台1是否有章 Object key1 = req.getAttribute("key1"); System.out.println("柜台1是否有章 " + key1); //处理自己的业务 System.out.println("柜台二处理中"); } }
4 HttpServletResponse类
HttpServletResponse类与HttpServletRequest类一样。每次请求进来,Tomcat服务器都会创建一个Response对象传递给Servlet程序使用。HttpServletRequest表示所有请求过来的信息,而HttpServletResponse表示所有相应的信息。
如果我们希望设置返回给客户端的信息,则可以通过HttpServletResponse对象来进行设置。