`
tianhandigeng
  • 浏览: 374484 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

jsp 内置对象使用

阅读更多

  这是第一次在JavaEye中写文章,以前都是在CSDN中写,不过觉得JavaEye中高手多,可能以后会慢慢转过来了。今天来写一下项目开发过程中的一个问题解决:

  先来说一下需求:有很多页面都要显示一些数据,如果是每个action都设置属性的时候,我觉得是很麻烦的,而且这些数据“全局”的味道,所以为了解决上面的两个问题,我觉得自定义一个Interceptor再显示页面之前进行一些操作,下面是我最开始做的,思路是手动往ValueStack中加值:

	HttpServletRequest request = (HttpServletRequest) ActionContext
				.getContext().get(StrutsStatics.HTTP_REQUEST);
		OgnlValueStack stack = (OgnlValueStack) request
				.getAttribute("struts.valueStack");

              String result=invocation.invoke();

		/**
		 * Set the properties
		 */
		List<Category> cityList = systemService.getCategorySortList("city");
		stack.set("cityList", cityList);

		EhcacheVindicatorProxy proxy = new EhcacheVindicatorProxy("menu");
		List<FrontMenu> frontMenuList = (List) proxy.get(FrontMenu.class,
				"frontmenus", "menus.xml");
		stack.set("frontMenuList", frontMenuList);

              return result;

 

   拦截器的顺序是这样的:

 

<!-- 配置系统默认拦截器栈 -->
		<interceptors>
			<interceptor name="properties"
				class="com.zuwoba.presentation.interceptor.PropertiesInterceptor" />
			<interceptor-stack name="group">
				<!--引用默认拦截器-->
				<interceptor-ref name="properties" />
				<interceptor-ref name="defaultStack" />

			</interceptor-stack>
		</interceptors>
		<!-- 将自定义拦截器栈定义为默认拦截器栈 -->
		<default-interceptor-ref name="group" />

 

这里上面两段代码红色部分要特别注意,顺序如果没配好,不是页面显示不了值,就是表单提交的数据无法得到,当然我也以为我配好了,但是最后的时候却出错了,我用的是SiteMesh来装饰,装饰页面可以取得值,被装饰页面却不能取得,所以我上面的这个是有问题的,问题的原因我觉得就是ValueStack是由Struts2自动维护的,如果是手动维护,而没对原理有充分理解的话,是会出问题的,所以建议不是很深入理解Struts2的人不要最后不要去动ValueStack。

 

   好了出问题了,解决不了,就要找其他方法呗,往session、application中直接设值然后在jsp页面取这种做法我是不会用的,无意中用<s:debug/>的时候看到了下面的Stack Context中的一些对象,Struts2叫做命名对象,其实也就是放置jsp内置对象的容器,既然jsp页面可以取到request的值,那么为何我不用request来传递数据呢?况且用jsp、servlet的时候不是经常这样干吗?request这么好的载体为什么不用?于是,就用request了,代码如下:

ActionContext context = invocation.getInvocationContext();
		HttpServletRequest request = (HttpServletRequest) context
				.get(ServletActionContext.HTTP_REQUEST);

		List<Category> cityList = systemService.getCategorySortList("city");
		request.setAttribute("cityList", cityList);

		EhcacheVindicatorProxy proxy = new EhcacheVindicatorProxy("menu");
		List<FrontMenu> frontMenuList = (List) proxy.get(FrontMenu.class,
				"frontmenus", "menus.xml");
		request.setAttribute("frontMenuList", frontMenuList);

		return invocation.invoke();

 

其实我在操作ValueStack的时候,总是会想这种方法是不是太偏了,因为对Struts2 维护ValueStack也不是太熟,所以心里面总是毛毛的,这会不会错啊,不是很肯定,我觉得有时候还是用传统一点的方法比较好,如果自己写得太偏了,这时候你就要问问自己,是不是还有比较常规一点的方法,说来说去也就那点东西,想想总是会想到的。

1
0
分享到:
评论

相关推荐

    实验三 JSP内置对象使用

    【实验三 JSP内置对象使用】 实验的目的是让学生熟悉并理解JSP中的几个核心内置对象,包括request、response、session、application以及out对象。这些对象是JSP中用于处理HTTP请求、响应、会话管理和输出数据的关键...

    JSP内置对象使用大全.doc

    在探讨《JSP内置对象使用大全》这一主题时,我们深入到Java Server Pages(JSP)的核心机制之一:内置对象。这些内置对象是JSP页面默认可用的对象,无需显式声明即可使用,极大地简化了Web应用程序的开发过程。以下...

    JavaWeb实验三 JSP内置对象使用【源代码+注释】

    实验三 JSP 内置对象使用 一、实验目的 1.熟悉 request、response、session、application、out 等内置对象。 2.理解购物车概念。 二、实验学时 2H 三、实验性质 综合性实验 四、实验内容 开发一个简易...

    JSP内置对象使用说明.doc

    总的来说,JSP内置对象是开发JSP页面的重要工具,它们简化了与HTTP请求和响应的交互,以及会话管理、应用范围内的数据共享和异常处理。理解并熟练运用这些对象,能提高JSP编程的效率和质量。在实际开发中,开发者应...

    jsp内置对象使用与说明

    9中正则表达式的具体使用与作用域,帮组您快速使用

    JSP内置对象实验报告.doc

    charset=UTF-8");...通过这些实验,你可以深入理解JSP内置对象的用途和功能,并学会如何在实际开发中有效利用它们来构建更复杂的Web应用程序。练习部分鼓励你尝试更多的方法和属性,以增强你的理解和实践能力。

    JSP内置对象实现在线聊天室设计布局

    这个是jsp内置对象实现一个在线聊天室的设计布局,本人已经实现整个项目。本文件主要供学习jsp内置对象使用,如果在看代码中有什么问题或者建议,欢迎联系我,大家以前讨论。

    JSP内置对象大全及实例解析

    JSP内置对象大全及实例解析,前面部分讲的是JSP的9大内置对象的函数和方法,后面是各个对象的所有方法的实例。

    jsp内置对象学习

    在本教程中,我们将深入探讨两个重要的JSP内置对象——Out对象和Request对象。 1. Out对象: Out对象是JSP页面中用于向客户端发送数据的主要手段。它是javax.servlet.jsp.JspWriter类的一个实例,负责管理服务器的...

    jsp内置对象的使用

    **正文** 在Java Server Pages(JSP)技术中,...理解并熟练运用JSP内置对象,能帮助开发者更高效地构建动态网页应用程序。在学习过程中,不断实践和探索,才能更好地掌握这些对象的功能和用法,从而提升开发技能。

    JSP内置对象归纳与总结

    JSP内置对象归纳与总结 JSP提供了九个内置对象,分别是out对象、request对象、response对象、session对象、application对象、pageContext对象、exception对象、config对象和page对象。这些内置对象是由容器实现和...

    原生jsp进行Web编程—作业3-JSP内置对象-Part2

    一、JSP内置对象练习 1、使用JSP中的session对象,实现用户登陆检验 (1)(1)web目录下的session-login目录中,新建login.jsp(允许用户输入用户名和密码), 在usercheck.jsp中进行验证,成功则显示index.jsp...

    jsp内置对象 jsp的几个内置的对象图解

    jsp内置对象 有关jsp的一些内置的对象的总结

    Jsp内置对象session总结

    JSP 内置对象 Session 总结 Session 对象是一种 JSP 内置对象,用于管理客户端与服务器端之间的会话期。下面是 Session 对象的详细介绍。 什么是 Session Session 对象是一个 JSP 内置对象,它在第一个 JSP 页面...

    JSP内置对象pdf

    JSP内置对象是JSP技术中的基础知识点,了解和掌握这些内置对象的用法对于开发基于JSP的Web应用至关重要。通过这些内置对象,开发人员可以更加方便地处理HTTP请求和响应、管理用户会话、存储应用范围内的数据等,从而...

    jsp内置对象聊天系统

    `jsp内置对象聊天系统`是一个基于JavaServer Pages(JSP)技术构建的简易聊天应用程序。在JSP中,内置对象是预定义的对象,可以直接在页面上使用,无需显式实例化,大大简化了开发流程。这个系统利用了JSP的内置对象...

    实例详解JSP内置对象--request对象

    实例详解JSP内置对象--request对象 request对象是JSP中的内置对象之一,它提供了访问HTTP请求信息的功能。在基于Web的开发中,request对象扮演着极其重要的角色。本文将通过实例详解request对象的使用和掌握。 一...

    JSP内置对象方法介绍示例

    在压缩包文件"JSP内置对象"中,可能包含了关于这些对象的详细解释、代码示例以及使用场景分析,可以帮助读者更深入地理解和掌握JSP内置对象的使用。通过阅读和实践其中的内容,开发者可以提升自己的JSP编程能力,为...

Global site tag (gtag.js) - Google Analytics