servlet请求的转发以及特点

1.请求的转发

在服务器里面资源跳转的方式。将请求再转发到其他地址,转发过程中使用的是同一个request请求,转发后浏览器地址栏内容不变。 请求转发的过程发生在服务器内部,只能从当前应用内部查找相应的转发资源,而不能转发到其它应用的资源。

2.实现方法

转发通过方法forward(req,resp)实现,他能将request对象转发到其他的servlet程序内,它能够共享request对象里面的资源。
具体实现方式如下:
req.getRequestDispatcher(“/002”).forward(req,resp);
通过方法setAttribute(),可以将一个servlet程序内的资源转发到另一个servlet程序内,实现资源共享。

3.请求转发的特点

(1)浏览器地址栏没有发生变化。
(2)多个servlet程序是同一个请求
(3)多个servlet程序共享一个request对象
(4)可以转发到WEB-INF目录下

4.具体代码实现

servlet程序1

public class HelloServlet04 extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	        System.out.println("servlet程序001...");
	        req.setAttribute("key001","servlet程序1内的资源....");
	        RequestDispatcher dispatcher = req.getRequestDispatcher("/002");
	        dispatcher.forward(req,resp);
	    }
    }
}

servlet程序2

public class HelloServlet05 extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	        System.out.println("servlet程序002...");
	
	        Object key001 = req.getAttribute("key001");
	        System.out.println(key001);
	
	        String name = req.getParameter("name");
	        String []hobby = req.getParameterValues("hobby");
	        String selfdes = req.getParameter("selfdes");
	
	        System.out.println("用户名称:" + name);
	        System.out.println("用户兴趣爱好:" + Arrays.asList(hobby));
	        System.out.println("用户自我描述:" + selfdes);
	    }
    }
}

HTML表单程序

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body bgcolor="aquamarine">
<h align="center">用户注册信息</h>
<form action="http://127.0.0.1:8088/servlet01_war/001" method="get">
    <table>
        <tr>
            <td>姓名:</td>
            <td><input type="text" name="name" /></td>
        </tr>
        <tr>
            <td>密码:</td>
            <td><input type="password" name="psd" placeholder="请输入6-12位由字母数字下划线组成的密码!"/></td>
        </tr>
        <tr>
            <td>确认密码:</td>
            <td><input type="password" name="psd" placeholder="确认密码!"/></td>
        </tr>
        <tr>
            <td>年龄:</td>
            <td><input type="number"/></td>
        </tr>
        <tr>
            <td>生日:</td>
            <td><input type="date" name="bir"/></td>
        </tr>
        <tr>
        <tr>
            <td>邮箱:</td>
            <td><input type="email" name="email"/></td>
        </tr>
        <tr>
            <td>电话:</td>
            <td><input type="tel" name="tel" /></td>
        </tr>
        <td>性别:</td>
        <td><input type="radio" name="gender" value="boy" checked="checked"/><input type="radio" name="gender" value="girl" /></td>
        </tr>
        <tr>
            <td>兴趣爱好:</td>
            <td>
                <input type="checkbox" name="hobby" value="java" />java
                <input type="checkbox" name="hobby" value="c++" />c++
                <input type="checkbox" name="hobby" value="python" />python
                <input type="checkbox" name="hobby" value="js" />javascript
            </td>
        </tr>
        <tr>
            <td>国籍:</td>
            <td>
                <select name="country">
                    <option >--请选择国籍--</option>
                    <option >中国</option>
                    <option >美国</option>
                    <option >俄国</option>
                    <option >法国</option>
                    <option >英国</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>自我描述:</td>
            <td>
						<textarea rows="10" cols="30" name="selfdes" >
							请输入自我评价信息,不低于200字!
						</textarea>
            </td>
        </tr>
        <tr>
            <td>其他信息:</td>
            <td><input type="file" name="file"/></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
        </tr>
    </table>
    <input type="submit" align="center" value="提交"/>
    <input type="reset" align="center" value="重置" />
</form>
</body>
</html>

5.运行结果

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java中的请求转发和重定向都是用于在不同的Servlet之间进行页面跳转的方式,但它们的实现方式和效果是不同的。 请求转发是指在当前Servlet中处理完请求后,将请求转发给另一个Servlet进行处理,转发后的请求由另一个Servlet来产生响应。请求转发的代码如下: ```java RequestDispatcher dispatcher = request.getRequestDispatcher("/b"); dispatcher.forward(request, response); ``` 其中,`/b`是要转发到的Servlet的路径,`request`和`response`是当前Servlet请求和响应对象,转发后的请求和响应对象也是这两个对象。 请求转发特点是:转发后的请求和响应对象与原始请求和响应对象是同一个,因此它们可以共享请求和响应的信息,比如请求参数、请求属性等。此外,请求转发是在服务器端完成的,客户端并不知道发生了转发,因此地址栏中的URL不会改变。 重定向是指在当前Servlet中处理完请求后,将请求重定向到另一个Servlet进行处理,重定向后的请求由浏览器重新发起,由另一个Servlet来产生响应。重定向的代码如下: ```java response.sendRedirect("/b"); ``` 其中,`/b`是要重定向到的Servlet的路径,`response`是当前Servlet的响应对象。 重定向的特点是:重定向后的请求和响应对象与原始请求和响应对象是不同的,因此它们不能共享请求和响应的信息。此外,重定向是在客户端完成的,因此地址栏中的URL会改变。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我没得冰阔落.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值