码迷,mamicode.com
首页 > 其他好文 > 详细

Servlet编程实例 续3

时间:2017-04-15 14:33:49      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:用户名   其他   发送   调度   ror   post   dir   定向   png   

----------------siwuxie095

   

   

   

   

   

   

   

   

Servlet 跳转之请求的转发

   

   

修改 LoginServlet.java:

   

package com.siwuxie095.servlet;

   

import java.io.IOException;

   

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

   

// LoginServlet 继承自 HttpServlet

public class LoginServlet extends HttpServlet {

/**

* 用于序列化和反序列化的 ID

*/

private static final long serialVersionUID = -7740192486028671728L;

   

 

//覆盖父类 HttpServlet doGet() 方法

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println("===== doGet =====");

// doGet() 方法里调用 doPost() 方法

//这样,GET请求和POST请求可以共用一套处理逻辑

doPost(req, resp);

}

   

//覆盖父类 HttpServlet doPost() 方法

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println("===== doPost =====");

String userName=req.getParameter("uname");

String password=req.getParameter("upwd");

System.out.println("用户名:"+userName);

System.out.println("密码:"+password);

 

String forward=null;

 

if (userName.equals("siwuxie095")&&password.equals("8888")) {

//请求转发

forward="/success.jsp";

/**

* 定义一个 RequestDispatcher对象

* RequestDispatcher 请求调度器

* 其对象rd封装了转发的操作,接收来自客户端的请求,然后将其转发到指定的资源上

*

* 通过 req getRequestDispatcher()方法获取一个RequestDispatcher对象

* String类型的参数 forward 表示要转发的地址

*/

RequestDispatcher rd=req.getRequestDispatcher(forward);

//使用forward()方法完成转发操作

rd.forward(req, resp);

 

//请求重定向

//resp.sendRedirect(req.getContextPath()+"/success.jsp");

}else {

//请求转发

forward="/error.jsp";

RequestDispatcher rd=req.getRequestDispatcher(forward);

rd.forward(req, resp);

 

//请求重定向

//resp.sendRedirect(req.getContextPath()+"/error.jsp");

}

 

/**

* 请求转发:

* 整个过程只涉及一次浏览器与服务器的交互,即只有一次请求响应,

* 在整个转发过程中,各组件共享同一组请求和响应对象

*

* 注意:转发只能在同一应用的组件间进行,不能转发给其他应用的组件

*

* 而请求重定向 sendRedirect 可以转发给其他应用地址

*/

}

 

}

   

   

访问:localhost:8080/MyServlet/login.jsp,分别输入 siwuxie095 和 8888

   

技术分享

   

   

   

转发到:http://localhost:8080/MyServlet/success.jsp,成功获取 用户名 密码

   

技术分享

   

   

   

整个过程分析如下:

   

浏览器的请求首先发送给 LoginServlet

   

LoginServlet 处理完毕后,将 req 和 resp 对象传递给 success.jsp,

传递的过程称之为 请求转发

   

整个过程只涉及一次浏览器与服务器的交互,即只有一次请求响应

   

在整个转发过程中,各组件共享同一组请求和响应对象

   

 

   

注意:转发只能在同一应用的组件间进行,不能转发给其他应用的组件

   

而请求重定向 sendRedirect() 可以转发给其他应用地址

   

如:令 forward="https://www.baidu.com/"; ,将会报 HTTP Status 404 错误

   

说明:请求转发不能转发给其他应用的地址,而请求重定向则可以访问其他应用的地址

   

   

   

   

   

   

   

【made by siwuxie095】

Servlet编程实例 续3

标签:用户名   其他   发送   调度   ror   post   dir   定向   png   

原文地址:http://www.cnblogs.com/siwuxie095/p/6714221.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!