JAVAWeb - HttpServletRequest

一.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 (数组名)这个方法可以直接输出字符串数组

posted @ 2022-10-30 16:02  回忆也交给时间  阅读(27)  评论(0编辑  收藏  举报