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

servlet请求的转发以及特点_第1张图片
servlet请求的转发以及特点_第2张图片

你可能感兴趣的:(javaweb,服务器,前端,java,servlet,html)