idea创建简单web项目分析Servlet的请求转发与重定向的区别
注:如需转载,请附上原文链接,如有建议或意见,欢迎批评指正!
需求说明:

// index.jsp页面
1 <%
2 String basePath = request.getScheme()+":"+"//"+request.getServerName()+":"+request.getServerPort()+"/"
3 +request.getServletContext().getContextPath()+"/";
4 %>
5 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
6 <html>
7 <head>
8 <title>ServletDemo加法运算</title>
9 </head>
10 <body>
11 <%--action: 表示访问的servlet路径--%>
12 <%out.print("basePath意味着:" + basePath);%>
13 <form action="<%=basePath%>ServletDemo1" method="post">
14 a: <input type="text" name="a"><br>
15 b: <input type="text" name="b"><br>
16 <input type="submit" value="计算"/><br>
17 </form>
18 </body>
19 </html>
// ServletDemo1.java
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; @WebServlet("/ServletDemo1")
public class ServletDemo1 extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println("init()方法");
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost()方法");
doGet(request, response);
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String a = request.getParameter("a");
String b = request.getParameter("b");
int sum = Integer.valueOf(a) + Integer.valueOf(b);
request.setAttribute("sum", sum);
// 方式一:PrintWriter对象写入
// response.getWriter().print(sum);
// 方式二:请求转发
// request.getRequestDispatcher("sum.jsp").forward(request, response);
// 方式三:重定向
ServletContext sc = request.getServletContext();
sc.setAttribute("sum2", sum);
response.sendRedirect("sum2.jsp");
System.out.println("doGet()方法");
} @Override
public void destroy() {
System.out.println("destroy()方法");
}
} // sum.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>请求跳转求和</title>
</head>
<body>
a + b = <%=request.getAttribute("sum")%>
</body>
</html> // sum2.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>重定向跳转求和</title>
</head>
<body>
a + b = <%=application.getAttribute("sum2")%>
</body>
</html>
index.jsp页面效果图展示:

1. 方式一:PrintWriter对象写入效果图:

2. 方式二:请求转发效果图:

3. 重定向效果图:

idea创建简单web项目分析Servlet的请求转发与重定向的区别的更多相关文章
- Servlet到Servlet的请求转发与重定向的区别
Servlet跳转到另一个Servlet中: request.getRequestDispatcher().forward();代表默认的是post方法,即在被跳转的Servlet的doPost()方 ...
- SERVLET API中转发与重定向的区别?
SERVLET API中转发与重定向的区别? 1.转发(forward方法) 转发仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址. 转发是服务器请求资源,服务器直接访问目标地址的 ...
- Servlet的请求转发和重定向
在学习servlet中对于转发和重定向的理解是非常重要的,但是常常把重定向和转发给混了,今天特地花点时间来总结以下. 一.servlet的转发 1.请求原理图如下所示: 2.可以简单理解转发就好比一 ...
- Java 请求转发和重定向的区别以及JavaWeb三大作用域
三大作用域以及转发和重定向 学习总结 1. 转发和重定向 转发 重定向 转发和重定向的区别: 什么时候用转发什么时候用重定向 三大作用域 作用域类型 作用域方法 如何选择作用域 总结 学习总结 1. ...
- servlet的请求转发与重定向
重定向: Spring的重定向 spring的请求转发:
- jsp servlet 的 请求转发和重定向
以前对于servlet和servlet/jsp之间的跳转路径问题感到很迷惑,今天亲自动手实验了一把,总结如下: servlet已经是项目根路径下面的资源了,所以servlet跳转的时候,在跳转路径上面 ...
- servlet中请求转发(forword)与重定向(sendredirect)的区别
摘自:http://www.cnblogs.com/CodeGuy/archive/2012/02/13/2349970.html 通俗易懂 servlet请求转发与重定向的区别: request.s ...
- servlet中请求转发(forword)和重定向(redirect)的区别
servlet请求转发与重定向的区别: request.setAttribute("test","hello"); request.getRequestDisp ...
- 创建简单web项目
Intellij Idea直接安装(可根据需要选择自己设置的安装目录),jdk使用1.6/1.7/1.8都可以,主要是配置好系统环境变量,tomcat7上tomcat的官网下载压缩包解压即可. 一.创 ...
随机推荐
- java中的赋值
java中的赋值使用符号“=”. 按照java编程思想的解释:它的意思是“取等号右边的值,把它复制给左边”. 当然左边必须是一个明确的,已命名的变量. 基本类型: int a=2; int b=3; ...
- sockt-浅谈接口性能测试脚本编写
平时我们做的都是http请求的接口测试,初次接触socket接口还是有点不知如何下手,其实他如http接口请求区别并不是很大,也是接口的链接-发送数据-断开连接这三大步骤来实现: 以下文章转载自:ht ...
- Redis为什么这么快以及持久化机制
1.首先我们谈一下为什么Redis快: 一. Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快. 二. 再说一下IO,Redis使用的是 ...
- django框架基础-ORM进阶-长期维护
############### ORM进阶---contenttype ################ 设计思路: """ 路飞有两种课,专题课和学位课, ...
- 五、RabbitMQ Java Client基本使用详解
Java Client的5.x版本系列需要JDK 8,用于编译和运行.在Android上,仅支持Android 7.0或更高版本.4.x版本系列支持7.0之前的JDK 6和Android版本. 加入R ...
- windows下apache运行环境搭建
apache的安装 要求: 1,不要安装到有中文的目录中: 2,尽量将apache,php,mysql安装到一个总的目录,便于管理.(如都建立在amp目录下,然后在该目录下分别建立apache,php ...
- 机器学习入门 - 逻辑(Logistic)回归(5)
原文地址:http://www.bugingcode.com/machine_learning/ex7.html 把所有的问题都转换为程序问题,可以通过程序来就问题进行求解了. 这里的模拟问题来之于C ...
- Numpy入门(二):Numpy数组索引切片和运算
在Numpy中建立了数组或者矩阵后,需要访问数组里的成员,改变元素,并对数组进行切分和计算. 索引和切片 Numpy数组的访问模式和python中的list相似,在多维的数组中使用, 进行区分: 在p ...
- Socket.io 入门 - Renyi的博客
Socket.io Vue 中使用 NPM 安装 npm install vue-socket.io --save npm install --save socket.io-client 引用 详情 ...
- 几种 npm install XXX 的区别
在使用npm命令安装资源包时,有哪些需要注意的区别 npm install X 会把X包安装到node_modules目录中 不会修改package.json 之后运行npm install命令时,不 ...