Servlet(二):Request的理解,重定向与转发的区别

1.HttpServletRequest对象
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
2.Request
2.1 常用方法
  getRemoteAddr方法返回发出请求的客户机的IP地址
  getRemoteHost方法返回发出请求的客户机的完整主机名
  getRemotePort方法返回客户机所使用的网络端口号
  getLocalAddr方法返回WEB服务器的IP地址
  getLocalName方法返回WEB服务器的主机名
  getRequestURL方法返回客户端发出请求时的完整URL

public class RequestDemo01 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //查看request对象的方式
        System.out.println(request.getContextPath()); //获得web项目路径
        System.out.println(request.getRequestURI()); //请求的URL路径
        //Remote 远程
        System.out.println(request.getRemoteUser()); //获得远程的用户名
        System.out.println(request.getRequestedSessionId()); //获得SessionId;
        System.out.println(request.getServletPath()); //请求servlet的url
        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);
    }
}

配置好web.xml文件后,在浏览器上输入http://localhost:8081/demo03/r1,在IDEA控制台上输出为
在这里插入图片描述
2.2 Request获得客户机请求参数(客户端提交的数据)
前端注册页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册</title>
</head>
<body>
<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>

注意:
表单提交的位置 action:服务项目的路径/servlet对应的请求url
method: 提交表单的方式
处理前端提交信息的Servlet类

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 {

        //通过HttpServletRequest获取前端用户提交的信息
        //req.getParameterValues(); 获得前端传递的控件信息,通过控件的name;但是可以接受多个参数的控件,比如(多选框....)
        //req.getParameter(); 获得前端传递的控件信息,通过控件的name;

        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);
    }
}

配置对应的web.xml文件

  <servlet>
        <servlet-name>RequsetDemo02</servlet-name>
        <servlet-class>Servlet.RequestDemo02</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>RequsetDemo02</servlet-name>
        <url-pattern>/r2</url-pattern>
    </servlet-mapping>

注意:getParameter(String)方法(常用): 获得前端传递的控件信息,通过控件的name;可以接受多个参数的控件,比如(多选框…)
getParameterValues(String name)方法(常用):获得前端传递的控件信息,通过控件的name

2.3 Request实现请求转发
转发:服务器把这个请求转向另外一个Servlet去处理(地址栏不会变),需要使用RequestDispatcher来进行处理,我们需要获得这个类,参数就是他要转发到的页面
实现例:RequestDispatcher requestDispatcher = req.getRequestDispatcher("/success.jsp");
requestDispatcher.forward(req,resp);
3.转发和重定向的区别
重定向:服务器告诉客户端,你去请求另外一个地址;客户端行为

  • 地址栏会变
  • 不能携带参数
    转发:服务器自己转发到服务器上的另一个请求; 服务器行为
  • 地址栏不会变
  • 可以携带参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值