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.运行结果