一.Request入门
HttpServletRequest:代表客户端的请求,通过http协议访问服务器,Http请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获得客户端的所有信息
<html> <body> <h2>Hello World!</h2> </body> <%--这里提交的路径,就是需要谁处理的路径--%> <form action="${pageContext.request.contextPath}/login" method="get"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit"><br> </form> </html>
简单的一个表单,把用户名和密码交给后端 servlet 处理
public class RequestTest extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { int username =Integer.parseInt( req.getParameter("username")); String user="1"; int user1=Integer.parseInt(user); int password =Integer.parseInt( req.getParameter("password")); String pwd="1"; int pwd1=Integer.parseInt(pwd); System.out.println(username+":"+password); if(username==user1) { if(password==pwd1){ resp.sendRedirect("/Success.jsp"); } else { resp.sendRedirect("/index.jsp"); } } else { resp.sendRedirect("/index.jsp"); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } }
后端拿到Parameter对象所携带的值后,进行一个简单的对比校验然后做出决定是否重定向
应用:
获取前端参数,请求转发
public class Loginservlet extends HttpServlet { @Override protected void doGet(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"); String[] hobbys = req.getParameterValues("hobbys"); System.out.println("======================"); System.out.println(username); System.out.println(password); System.out.println(Arrays.toString(hobbys)); System.out.println(req.getContextPath()); System.out.println("======================"); req.getRequestDispatcher("/Success.jsp").forward(req,resp);//这里的“/”就已经包含了文件目录不需要加其它的项目目录 } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
在网页发出请求的时候,处理方法,有post和get两种,同时,我们的servlet对应的两个重写方法,doGet和doPost方法是与之对应的,在我们不知到用户要用什么进行传输信息时,可以只用写一个方法,然后相互调用就可以比避免出现507,网页不支持post或get方法的情况
补充:对于请求过来的数据,一般使用两个方式进行接收
一个是 getParameter :用于接收单个数据(字符串)
另一个是 getParameterValues :用于接收多个数据(字符串数组)
注:字符串数组的输出方式:Arrays.toString (数组名)这个方法可以直接输出字符串数组