015、java Sevlet_RequestDispatcher请求转发
本文最后更新于 327 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

java Sevlet_RequestDispatcher请求转发

RequestDispatcher接口提供将请求转发送到另一个资源的功能,它可能是htmlservletjsp等。 此接口也可用于包括另一资源的内容。它是servlet协作的一种方式。
RequestDispatcher接口中定义了两种方法。它们分别是

编号 方法 描述
1 public void forward(ServletRequest request,ServletResponse response)throws|ServletException,java.io.IOException 将servlet的请求转发到服务器上的另一个资源(servlet,JSP文件或HTML文件)。
2 public void include(ServletRequest request,ServletResponse response)throws ServletException,java.io.IOException 在响应中包含资源的内容(servlet,JSP页面或HTML文件)。
如上图所示,第一个servlet转发请求到第二个servlet的响应发送给客户端。 第一个servlet的响应不会显示给用户。
如上图所示,第二个servlet的响应将包含在发送给客户端的第一个servlet的响应中。

如何获取RequestDispatcher的对象?
ServletRequest接口的getRequestDispatcher()方法返回RequestDispatcher的对象。
getRequestDispatcher方法的语法如下 -

public RequestDispatcher getRequestDispatcher(String resource);

使用getRequestDispatcher方法的示例

RequestDispatcher rd=request.getRequestDispatcher("servlet2");  
//servlet2 is the url-pattern of the second servlet  
rd.forward(request, response);//method may be include or forward/

RequestDispatcher接口示例

在这个例子中,创建了以下几个文件:

  • index.html:用于从用户处获取输入。
  • Login.java:用于处理响应的servlet类。如果用户输入的密码是mypasswd,它会将请求转发给WelcomeServlet
  • WelcomeServlet.java:用于显示欢迎消息的servlet类。
  • web.xml:包含有关servlet信息的部署描述符文件

工作流程:

forward.html

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
    <div style="text-align: center">
        <form action="login" method="post">
            用户名:<input type="text" name="userName"><br/>
            密码:<input type="password" name="userPwd"><br/>
            <input type="submit" value="登录">
        </form>
    </div>
</body>
</html>

Login.java

public class Login extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        // 设置服务器端编码
        response.setCharacterEncoding("utf-8");
        // 设置响应内容类型器
        response.setContentType("text/html;charset=utf-8");
        // 获取响应输出对象
        PrintWriter out = response.getWriter();

        String name = request.getParameter("userName");
        String password = request.getParameter("userPwd");

        //判断用户输入的用户名和密码是否正确
        if (password.equals("password")&&name.equals("admin")){
            RequestDispatcher requestDispatcher = request.getRequestDispatcher("WelcomeServlet/welcome");
            System.out.println("Username is "+ name);
            requestDispatcher.forward(request,response);
        }
    }
}

注意:getRequestDispatcher()里面的参数要和你要重定向的java程序在web.xml下的配置路径一致

注意:关于url路径问题 在html中href和action中第一个字符不能是'/',有'/'就会覆盖工程目录,而web.xml中的路径第一个字符一定加'/',不加会报错,它不会覆盖工程目录而是把它加在后面

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         id="WebApp_ID" version="3.1">
    <display-name>ServletRequest</display-name>
    <welcome-file-list>
        <welcome-file>forward.html</welcome-file>
        <welcome-file>head.html</welcome-file>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>Login</servlet-name>
        <servlet-class>Login</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>WelcomeServlet</servlet-name>
        <servlet-class>WelcomeServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>WelcomeServlet</servlet-name>
        <url-pattern>/WelcomeServlet/welcome</url-pattern>
    </servlet-mapping>
</web-app>
谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇