Java EE系列(六)——关于第7个war包的学习总结

今天我们进入第7个war包的学习。

首先我们先看学习要求

自行完成相应的动作和思考
    0.读完程序中的文档,即注释,如果有相关问题,则直接回答问题。

Servlet的对象参数的作用域
    1 request-Request对象
    2 session-HttpSession对象
    3 application-ServletContext对象

在项目中,页面之间或是请求之间会发生跳转,跳转过后,数据还可不可见,能不能传递过去,用户心里要清楚。
    1 Servlet与Servlet之间
    2 Servlet与JSP之间
    3 JSP与JSP之间

注意路径,特别是相对路径

老规矩,关于readme文件所提到的问题,我们一个一个进行解决。

Servlet的对象参数的作用域

1.request-Request对象

Request对象的作用是与客户端交互,收集客户端的Form、Cookies、超链接,或者收集服务器端的环境变量。request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。 

2.session-HttpSession对象

Session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要Session对象。而HttpSession 是服务器端的技术,服务器会为每一个用户创建一个独立的Session,其属于一个会话。

3.application-ServletContext对象

ServletContext是一个“域对象”,它可以用来给多个servlet传递数据,所以其具有存数据与取数据的功能。一个项目只有一个ServletContext对象,对象名通常是application,也就是说可以从多个servlet中获取这唯一一个对象,
这个对象随着服务器的启动而创建,随着服务器的关闭而死亡。

页面之间的跳转

1.Servlet与Servlet之间

 Servlet之间可以实现跳转,从一个Servlet跳转到另一个Servlet,利用Servlet的跳转技术可以很方便的把一块业务模块分开,比如使用一个Servlet接收用户请求,根据业务规则转到其他Servlet进行处理,最后跳转到另一个Servlet把处理结果展示出来。

Servlet提供了两种跳转方式:

  • request对象提供的:转发Forward
  • response对象提供的:重定向Redirect

那么,什么是转发与重定向呢?转发是一种服务器行为,是一种在服务器内部的资源跳转方式,其 通过request对象获取请求转发器对象:RequestDispatcher,getRequestDispatcher(String path),然后使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)。而重定向是另一种客户端行为,其通过客户端浏览器发送http请求,servlet1响应通知浏览器重定向到servlet2,同时浏览器请求servlet2,响应的服务器根据此请求寻找资源并发送给客户。两者的原理图如下图所示。

  

  

 2.Servlet与JSP之间&JSP与JSP之间

servlet跳转到jsp页面同样是转发和重定向这两种方式。而jsp之间通常可以通过超链接标记、提交表单、JavaScript事件、response对象、forword动作标记等方式进行页面跳转。

好的,接下来我们就开始深入理解第7个war包的示例代码。

第1个项目:实现数字计算的功能。运行dataOperation下的index.html文件,显示如下界面。

  

该项目的开方、乘十,显示功能分别通过requestparam包下的三个servlet进行实现。

其中servlet之间请求与转发操作的代码分别如下:

//设置请求上属性的参数
request.setAttribute("count",str); 
// 转发给另一个Servlet来处理
request.getRequestDispatcher("operTwoServlet").forward(request,response);
// 再次置入请求属性的参数
request.setAttribute("count",String.valueOf(count));
// 转发给另一个Servlet来处理
request.getRequestDispatcher("showServlet").forward(request,response);
//获取请求属性上的参数
String strcount=(String)request.getAttribute("count");

最后运行结果

  

  

第2个项目:实现系统消息管理的功能。运行servletContextPara包下的admin.html文件,显示以下界面

    

然后运行index.html文件,页面显示信息已经被保存。

  

查看响应servlet代码,发现是通过上下文数据共用进行实现。

ServletContext sc;	//APP全局可见

第3个项目:运行shopping目录下的index.html文件,显示如下界面

    

将商品添加至购物车之后,查看购物车,发现商品已经出现在购物列表之中。

  

接着我们来查看原理,首先查看index.html文件

<!-- 以下有两个form,请求的URL是不一样的 -->
		<form action="../addServlet" name="form1">
			输入您要购买的产品名称:<br>
			<input type="text" name="product">
			<input type="submit" value="添加购物车">
		</form>
		<form action="../shoppingServlet" name="form2">
			<input type="submit" value="查看购物车">
		</form>

和第六个war包的原理相似,首先通过form表单的形式将路径提交到servlet上,然后再servlet中创建session对象

// 创建session对象,即创建会话
HttpSession session=request.getSession();

再获取对应属性值

//获取session
HttpSession session=request.getSession(); 					
//获取属性值 
String shopping=(String)session.getAttribute("shopping");	

最终完成数据的存取功能。

完成第7个war包的学习,又是收获满满的一天!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值