Servlet与Servlet、JSP与Servlet的跳转

AltiumDesigner 高效封装库管理 -- samacsys插件实战指南 本文详细介绍了如何利用samacsys插件高效管理AltiumDesigner封装库。通过实战指南,指导用户完成插件安装、云端元件搜索放置,并分享将海量资源整合为个人标准库的管理策略,从而大幅提升PCB设计效率可靠性,杜绝封装错误。 阅读详情

目录

Servlet与Servlet之间的跳转

forward方法实例:

用from表单从JSP页面转到Servlet

实例

Servlet与Servlet之间的跳转

Servlet和Servlet之间的跳转,可以通过请求转发来实现,即RequestDispatcher对象的forward方法;也可以使用重定向方法,即HttpServletResponse对象的sendRedirect方法。

forward方法实例:

调用OperServlet请求,将request请求中的cout属性进行开根号处理,之后将服务转发给另一个Servlet处理,即operTwoServlet

OperServlet:

/**
 * 
 * <li>只做一件事情的组件:开根号处理
 *
 */
public class OperServlet extends HttpServlet
{
	public void init(){}
	public void doGet(HttpServletRequest request,HttpServletResponse response)
				throws ServletException,IOException {
		//获取请求参数
		String strcount=request.getParameter("count");
		int count = (int)Double.parseDouble(strcount);
		//int count = (int)Integer.parseInt(strcount);
		//进行开根号处理
		count = (int)Math.sqrt(count);
		String str=String.valueOf(count);
		//设置请求上属性的参数
		request.setAttribute("count",str); 
		// 转发给另一个Servlet来处理
		request.getRequestDispatcher("operTwoServlet").forward(request,response);
	}
}

operTwoServlet接收请求,将request请求中的cout属性进行乘以10处理,之后将服务转发给另一个Servlet处理,即showServlet

operTwoServlet:

/**
 * 
 * <li>只做一件事情的组件:乘10
 *
 */
public class OperTwoServlet extends HttpServlet
{
	public void init(){}
	public void doGet(HttpServletRequest request,HttpServletResponse response)
				throws ServletException,IOException
	{
		// 获取请求属性上的参数
		String strcount=(String)request.getAttribute("count");
		int count=Integer.parseInt(strcount);
		// 进行乘10处理
		count *= 10;
		// 再次置入请求属性的参数
		request.setAttribute("count",String.valueOf(count));
		// 转发给另一个Servlet来处理
		request.getRequestDispatcher("showServlet").forward(request,response);
	}
}

showServlet接收请求,将运算后的结果输出在网页上。

showServlet:

/**
 * 
 * <li>只做一件事情的处理,显示,即往客户端推流
 *
 */
public class ShowServlet extends HttpServlet
{
	public void init(){}
	public void doGet(HttpServletRequest request,HttpServletResponse response)
				throws ServletException,IOException
	{
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out=response.getWriter();
		//获取请求属性上的参数
		String strcount=(String)request.getAttribute("count");
		String prefix = "开方十乘处理后的结果是:";
		out.println(prefix+strcount);
	}
}

运行: 

 

 

 

请求转发服务器只会对servlet发出一次请求,剩下的都是在servlet内部进行任务的传输交接,而重定向则是服务器会对servlet进行两次或者多次的请求,如图:

 

用from表单从JSP页面转到Servlet

form表单中的action属性的值是表单提交给的url,如果我们没有设置action属性,那么默认的表单还是提交给当前页面

<form action="../addServlet">
	 。。。
</form>

 action属性规定当提交表单时,向何处发送表单数据。例如上例,提交表单时,表单数据会提交到名为 “addServlet” 的页面。

实例

运行html文件,显示在网页上的界面:

   图1.1

其中供用户在网页上使用的两个操作的代码,即两个from表单,在html文件中的代码:

1. 图1.1中操作1

<form action="../addServlet" name="form1">
	输入您要购买的产品名称:<br>
	<input type="text" name="product">
	<input type="submit" value="添加购物车">
</form>

当用户执行完表单中输入文本域("text")与提交按钮("submit")之后,便会转发一个请求到addServlet。AddServlet.java文件源代码:

/**
 * 
 * <li>添加购物车
 *
 */
public class AddServlet extends HttpServlet
{
	public void init(){}
	public void doGet(
			HttpServletRequest request,
			HttpServletResponse response) 
					throws ServletException,IOException {
		// 配置输出参数
		response.setContentType("text/html;charset=utf-8");
		// 输出对象,即开流
		PrintWriter out=response.getWriter();
		// 创建session对象,即创建会话
		HttpSession session=request.getSession();
		// 获取参数,强转为相应的类型,更方便使用
		String product=(String)request.getParameter("product");
		String shopping=(String)session.getAttribute("shopping");
		// 设置参数的编码,避免中文乱码
        String newproduct=new String(product.getBytes(),"utf-8");
		if(shopping==null)	// 首次,肯定是null状态
		{
			//设置session域的属性参数值
			session.setAttribute("shopping",newproduct); 		
		}
		else
		{
			String str=shopping+"<br>"+newproduct;
			session.setAttribute("shopping",str);
		}
		out.println("产品已添加至购物车中!");
	}
}

 可以看到,运行时将用户的输入(即product对象)通过request请求转化为字符串格式,并将其存储在session会话中的shopping对象中。

2. 图1.1中操作2

<form action="../shoppingServlet" name="form2">
	<input type="submit" value="查看购物车">
</form>

当用户点击提交按钮("submit")之后,便会运行shoppingServlet文件,可以查看之前用户提交的购物商品。shoppingServlet.java文件源代码: 

/**
 * 
 * <li>购物车信息
 *
 */
public class ShoppingServlet extends HttpServlet
{
	public void init(){}
	public void doGet(
			HttpServletRequest request,
			HttpServletResponse response) 
					throws ServletException,IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out=response.getWriter();
		//获取session
		HttpSession session=request.getSession(); 					
		//获取属性值 
		String shopping=(String)session.getAttribute("shopping");	
       
		if( shopping==null ) {
			out.println("<h1>购物车为空!</h1>");
		} else {
			out.println("<h1>购物车</h1><br>"+shopping);
		}

	}
}

即将session中shopping对象的值输出到网页上。

若用户没有提交购物商品,即shopping值为空,网页显示为:

若用户提交过购物商品,即执行过操作1,网页显示为;

采用MPU6050的手势遥控器 随着社会的发展进步,电子产品日益更新,个人家庭迎来了越来越多的智能家电。然而,现在的智能电子设备产品的遥控器多数都是按键形的。操作繁琐不直观,学习成本大。并且对于有老人小孩的家庭,给他们的操作带来了巨大的障碍。手势遥控器是指利用简单的手势来指挥电子设备,获得便捷的操作体验。让家庭成员都可以享受科技发展带来的福利。MPU6050是一个运动传感器,内置陀螺仪,再由电子设备利用判断结果做出相应的响应即... 阅读详情

相关推荐

原理和代码解读:用Diffusion Models高清图像修复(Image Inpainting)

在最近的Diffusion Models应用中,Image Inpainting+ControlNet/Lora等工作在模特衣服生成、家居场景重建等场景中得到了广泛的应用。这篇博客主要介绍Diffusion Models如何在修复高清图像的。

沉迷单车的追风少年 2447

Servlet跳转jsp页面的几种方法

1.sendRedirect方式 sendRedirect("/a.jsp"); 可以将页面跳转到任何路径,不局限于web应用中,跳转的过程中url地址变化,无法使用request.setAttribute来传递。 2.forward方式 request.getRequestDispatcher("/a.jsp").forward(request.response); url地址不变,只能...

weixin_30713953的博客 6193

【深度学习|语义分割之UNet】如何使用ResNet50 作为 U-Net 网络的骨干网络(backbone)并使用预训练的 ResNet50 模型。附代码及解读。

【深度学习|语义分割之UNet】如何使用ResNet50 作为 U-Net 网络的骨干网络(backbone)并使用预训练的 ResNet50 模型。附代码及解读。

985小水博的摸鱼日常 3023

servlet跳转JSP页面的两种方法

servlet调用jsp,有两种方式:转向和重定向 转向:是在一个Web工程内部,各组件之间的调用。在调用时,request对象中的信息不会丢失(request对象不消亡),进入另一个组件后,request对象中的数据可以在新组件继续使用。 重定向:可以在一个Web工程内部,各组件之间实现调用,也可以直接跳转到其他Web工程的Jsp页面。并且,在跳转到新组件后,重新创建request对象。 转向:在servlet中实现转向,需要有请求对象(HttpServletRequest request)获得一个转发

Mtf007的博客 8327

servletjsp代码

servletjsp代码

简单点的博客 473

Java系列课程第四十三天 (JavaWEB-JSP

Day42 JavaWEB-JSP Servlet 1.1 Response Http中响应消息格式 *格式: HTTP/1.1 200 OK Content-Type: text/html;charset=UTF-8 Content-Length: 101 Date: Wed, 06 Jun 2018 07:08:42 GMT (空行) <span class="katex--inline">Title</span> hello , response 1) 响

java_YHkaifa的博客 414

Servlet跳转页面的几种方法总结

servlet跳转页面的方法: 跳转分为两部分,一部分发生在servlet,另一部分发生在JSPJSP就是servlet,但是两者还是有部分差异。 Servlet:(跳转发生在doGet,doPost等方法里) (1)redirect方式 response.sendRedirect(“/index.jsp”);页面的路径是相对路径。sendRedirect可以将页面

小怪兽 6万+

JSP跳转Servlet的两种方式

前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、法一 通过response.sendRedirect()进行跳转 1.java代码 代码如下(示例): package kedun.dhy; import javax.servlet.*; import javax.servlet.http.*; @SuppressWarnings("serial") public class HttpSessionDemoServlet extends HttpServlet{ public .

zhouwenyan2548的博客 1万+

servlet+jsp如何跳转页面

servlet+jsp跳转不防试试这个方法,希望能帮助大家。 首先在jsp页面中点击谁来跳转 下面当点击button《注册》的时候就跳转页面 jsp: 添加这个行 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <c:set value="${pageContext.request.contextP...

weixin_44540416的博客 1256

IDEA中的JSP无法跳转Servlet问题

折腾了一天,终于弄好,结果很扎心。 建立一个空白的JavaWeb项目后,建立在src中建立一个Servlet。 IDEA默认生成代码↓ @WebServlet(name = "Servlet") public class Servlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpS...

程序袁的CSDN 1万+

servlet.java如何跳转jsp页面jsp如何跳到servlet.java

servlet.java如何跳转jsp页面# 必须使用绝对路径,不能使用相对路径,servlet.java是在src目录下,jsp是在webroot目录下,彼此不存在相对关系; //调用后台的方法,将新闻信息插入数据库中 bRet = newsService.add(news); if(bRet) /*重定向的绝对路径是:localhost:8080/web5/jsp/newsDeta...

qq_41554955的博客 7470

jspservlet之间的跳转

JSPServlet之间跳转总结:   Request.getContextPath() 即代表 /项目名。 如/news01   一、从JSP页面跳到其他页面Servlet   从JSP页面跳到其他页面使用全路径( /项目名/文件的路径 )。如项目名为news01,页面目录如下     1)比如从index.jsp页面跳到main文件夹下的list.jsp

JAVA_96的博客 1343

jsp 跳到servlet路径_从JSP跳转Servlet的路径应该如何设置

JSP跳转Servlet的路径应该怎么设置?packagekedun.dhy;importjavax.servlet.*;importjavax.servlet.http.*;@SuppressWarnings("serial")publicclassHttpSessionDemoServletextendsHttpServlet{publicvoiddoGet(HttpSe...

weixin_39567870的博客 1229

JSPServlet之间跳转总结:

JSPServlet之间跳转总结:   Request.getContextPath() 即代表  /项目名。 如/news01   一、从JSP页面跳到其他页面Servlet   从JSP页面跳到其他页面使用全路径( /项目名/文件的路径 )。如项目名为news01,页面目录如下        1)比如从index.jsp页面跳到main文件夹下的list.jsp页面: ...

奇迹的黄昏 305

jsp 跳到servlet路径_Servlet路径跳转问题

response.sendRedirect("userinfo.jsp"); //这里使用的是相对路径Servlet的路径跳转一、JSP跳转Servlet1、相对路径,如href="servlet/TestServlet" 如果写成"/servlet/TestServlet"会报错,因为第一个“/”表示的是【服务器根目录】2、绝对路径,通过内置成员变量path实现,如href="/servlet...

weixin_39793638的博客 3741

servlet转到jsp页面

servlet转到jsp页面 1、方法 1、1重定向 sendRedirect("/a.jsp"); 可以将页面跳转到任何路径,不局限于web应用中,跳转的过程中url地址变化,无法使用request.setAttribute来传递。 注意:路径前要加/ 1、2转发 request.getRequestDispatcher("/a.jsp").forward(request.response); url地址不变,只能跳转到本web应用中的页面上。可以用request.setAttibute方法 .

lixiaoping666的博客 3166

通过servlet实现jsp页面跳转

通过servlet实现jsp页面跳转 1、首先生成两个jsp页面jsp1.jspjsp2.jsp; 2、在src下面新建一个myServlet包在包里建一个testServletservlet 3、在web.xml里面定义: &lt;servlet&gt;     &lt;description &gt;This is the description of my J2EE com...

月光疾风的博客 1万+

servlet.java如何跳转jsp页面

1、必须使用绝对路径,不能使用相对路径,servlet.java是在src目录下,jsp是在webroot目录下,彼此不存在相对关系;2、什么是绝对路径;绝对路径是指 含有域名的路径,可以输入浏览器直接访问页面的url,而相对路径不可以;3、servlet如何跳转jsp,务必使用决定路径,如下两种方式:重定向 和转发。区别是 重定向要在域名后+工程名;而转发禁止加;//调用后台的方法,将新闻信息...

专注编程和人工智能! 1万+

实现JSPServlet相互跳转

在之前写项目的时候遇到了JSP跳转Servlet的问题,一开始网上查教程的时候Servlet里也有HTML内容,以为可以直接跳,结果失败了,后续发现是需要讲Servlet对应的JAVA文件写入到web.xml之中去。当时是已经写好Servlet文件并且写好跳转JSP,因为需要在到达之前将后端的数据传输给JSP将其打印为表格的形式。在tomcat里的WEB-INF文件夹,打开web.xml,往其中写入Servlet对应的映射和路径。这样子就能实现jspservlet之间相互跳转了,记得路径要写对。

h20964796873的博客 973

Servlet实现页面跳转:转发、重定向

Servlet实现页面跳转有2种方式:转发重定向。 1、转发 转发是在服务器端起作用的,当使用 forward() 方法时,Servlet 容器传递HTTP请求,从当前的 ServletJSP,此过程仍然在 request 的作用范围内。转发后,浏览器的地址栏内容不变。 转发使用 HttpServletRequest 对象的 forward() 方法实现,对应的 Servlet 语...

pan_junbiao的博客 3万+

chanlunv1.2源码.rar_大智慧_缠论_缠论 源码_缠论源码_股票

缠论公式源码,适用于大智慧,飞狐平台,实现了缠中说禅的绝大部分内容

32万条全国旅游景点数据.7z

全国景点数据SQL。结构如下( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(67) DEFAULT NULL, `tel` varchar(69) DEFAULT NULL, `add` varchar(190) DEFAULT NULL, `type` varchar(176) DEFAULT NULL, `areaid` varchar(7) DEFAULT NULL, `poiid` varchar(11) DEFAULT NULL, `gcjx` varchar(11) DEFAULT NULL, `gcjy` varchar(10) DEFAULT NULL, `gpsx` double DEFAULT NULL, `gpsy` double DEFAULT NULL, PRIMARY KEY (`id`)) 数据如下('2', '北京动物园(北2门)', '', '五塔寺路22号', '风景名胜;风景名胜相关;旅游景点', '110108', 'B000A81FAR', '116.333487', '39.944157', '116.327336', '39.942834');内含324498项数据,数据含景点名,电话、类型、各类型地理位置标识

上一篇: ServletContext中getRealPath()读取文件、观察servlet运行过程
下一篇: 用户登录的模拟以及参数如何传到服务器上
爱编程的拉娜德雷
博客等级 码龄5年 7粉丝 10原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值