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 处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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对象所携带的值后,进行一个简单的对比校验然后做出决定是否重定向
应用:
获取前端参数,请求转发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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 (数组名)这个方法可以直接输出字符串数组
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)