﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-tinguo002-随笔分类-struts2</title><link>http://www.blogjava.net/tinguo002/category/52099.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 05 Sep 2012 20:46:35 GMT</lastBuildDate><pubDate>Wed, 05 Sep 2012 20:46:35 GMT</pubDate><ttl>60</ttl><item><title>STRUTS2获得session和request </title><link>http://www.blogjava.net/tinguo002/archive/2012/09/05/387093.html</link><dc:creator>一堣而安</dc:creator><author>一堣而安</author><pubDate>Wed, 05 Sep 2012 06:15:00 GMT</pubDate><guid>http://www.blogjava.net/tinguo002/archive/2012/09/05/387093.html</guid><wfw:comment>http://www.blogjava.net/tinguo002/comments/387093.html</wfw:comment><comments>http://www.blogjava.net/tinguo002/archive/2012/09/05/387093.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tinguo002/comments/commentRss/387093.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tinguo002/services/trackbacks/387093.html</trackback:ping><description><![CDATA[<p><br />来源</p><p><a href="http://www.cnblogs.com/earl86/archive/2008/11/13/1666459.html">http://www.cnblogs.com/earl86/archive/2008/11/13/1666459.html</a><br /><br />在struts1中，获得到系统的request或者session对象非常方便，都是按照形参传递的，但是在struts2中，request和session都被隐藏了<br />struts提供两种方式访问session和request，其中比较常用的是利用SPRING里面所说的IOC即控制反转<br />IOC方式：<br />action类实现ServletRequestAware接口，并新建一个HttpServletRequest request<br />public class UserLoginAction extends ActionSupport implements ServletRequestAware{<br />&nbsp;&nbsp;&nbsp; public void setServletRequest(HttpServletRequest request) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.request=request;<br />&nbsp;&nbsp; }<br />然后可以生成的request得到对象，如request.getRemoteAddr()<br />action类实现SessionAware接口，并创建一个MAP对象session<br />public class UserLoginAction extends ActionSupport implements ServletRequestAware,SessionAware{<br />&nbsp;&nbsp;&nbsp; public void setServletRequest(HttpServletRequest request) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.request=request;<br />&nbsp;&nbsp; }<br />public void setSession(Map session) {<br />&nbsp;&nbsp; this.session=session;&nbsp; <br /> }<br />非IOC方式<br />非Ioc方式</p><div style="text-indent: 21.75pt;">这种方式主要是利用了<span style="background: 0% 50% red; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">com.opensymphony.xwork2.ActionContext</span>类以及<span style="background: 0% 50% red; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">org.apache.struts2.ServletActionContext</span>类，具体的方法如下所示。</div><div style="text-indent: 21.75pt;">获得request对象：</div><div style="text-indent: 21.75pt;"><span style="color: black;">A</span><span style="color: black;">．</span><span style="color: black;">HttpServletRequest request = ServletActionContext.getRequest ();</span></div><div style="text-indent: 21.75pt;">B．ActionContext ct=<span style="color: black;"> ActionContext.<em>getContext</em>()</span></div><div style="text-indent: 21.75pt;"><span style="color: black;">&nbsp;&nbsp;&nbsp; </span><span style="color: black;">HttpServletRequest request=</span></div><div style="text-indent: 30.7pt;"><span style="color: black; font-size: 10pt;">(HttpServletRequest)ct.get(ServletActionContext.</span><em><span style="color: rgb(0, 0, 192); font-size: 10pt;">HTTP_REQUEST</span></em><span style="color: black; font-size: 10pt;">);</span></div><div style="text-indent: 21.75pt;">获得session对象：</div><div style="text-indent: 21.75pt;">在Struts2中底层的session都被封装成了Map类型，我们称之为SessionMap，而平常我们所说的session则是指HttpSession对象，具体的获得方法如下所示。</div><div style="text-indent: 21.75pt;">A．Map session=ActionContext.getSession();</div><div style="text-indent: 21.75pt;">B．Map session=(Map)ActionContext.getContext().get(ActionContext.SESSION);</div><div style="text-indent: 21.75pt;">得到这个SessionMap之后我们就可以对session进行读写了，<span style="background: 0% 50% blue; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">如果我们想得到原始的</span><span style="background: 0% 50% blue; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">HttpSession</span><span style="background: 0% 50% blue; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">可以首先得到</span><span style="background: 0% 50% blue; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">HttpServletRequest</span><span style="background: 0% 50% blue; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">对象，然后通过</span><span style="background: 0% 50% blue; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">request.getSession()</span><span style="background: 0% 50% blue; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">来取得原始的</span><span style="background: 0% 50% blue; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">HttpSession</span><span style="background: 0% 50% blue; color: white; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">对象</span>。一般情况下SessionMap已经可以完成所有的工作，我们不必再去碰底层的session了。</div><img src ="http://www.blogjava.net/tinguo002/aggbug/387093.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tinguo002/" target="_blank">一堣而安</a> 2012-09-05 14:15 <a href="http://www.blogjava.net/tinguo002/archive/2012/09/05/387093.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2 遍历Map的N中方法</title><link>http://www.blogjava.net/tinguo002/archive/2012/07/26/384097.html</link><dc:creator>一堣而安</dc:creator><author>一堣而安</author><pubDate>Thu, 26 Jul 2012 09:51:00 GMT</pubDate><guid>http://www.blogjava.net/tinguo002/archive/2012/07/26/384097.html</guid><wfw:comment>http://www.blogjava.net/tinguo002/comments/384097.html</wfw:comment><comments>http://www.blogjava.net/tinguo002/archive/2012/07/26/384097.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tinguo002/comments/commentRss/384097.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tinguo002/services/trackbacks/384097.html</trackback:ping><description><![CDATA[<h2 class="title content-title">&nbsp;</h2>
<div id="content" class="content text-content clearfix">
<p>来源<br /><a href="http://hi.baidu.com/iduany/item/19f9f622603ba8172a0f1c72">http://hi.baidu.com/iduany/item/19f9f622603ba8172a0f1c72</a><br />struts2 遍历Map的N中方法</p>
<p>主要针对以下几种情况的Map:<br />private Map&lt;String, String&gt; strMap = new HashMap&lt;String, String&gt;();<br />private Map&lt;String, Person&gt; perMap = new HashMap&lt;String, Person&gt;();</p>
<p>private Map&lt;String, String[]&gt; strArryMap = new HashMap&lt;String, String[]&gt;();<br />private Map&lt;String, List&lt;Person&gt;&gt; perLstMap = new HashMap&lt;String, List&lt;Person&gt;&gt;();</p>
<p>下面给出一个示例<br />1).ExpressMapAction.java<br />package com.expre.struts2.action;</p>
<p>import java.util.ArrayList;<br />import java.util.HashMap;<br />import java.util.List;<br />import java.util.Map;</p>
<p>import com.expre.struts2.bean.Person;<br />import com.expre.struts2.bean.Phone;<br />import com.opensymphony.xwork2.ActionSupport;</p>
<p>public class ExpressMapAction extends ActionSupport {<br />private static final long serialVersionUID = -4251480679223607716L;</p>
<p>private Map&lt;String, String&gt; strMap = new HashMap&lt;String, String&gt;();</p>
<p>private Map&lt;String, Person&gt; perMap = new HashMap&lt;String, Person&gt;();</p>
<p>private Map&lt;String, String[]&gt; strArryMap = new HashMap&lt;String, String[]&gt;();</p>
<p>private Map&lt;String, List&lt;Person&gt;&gt; perLstMap = new HashMap&lt;String, List&lt;Person&gt;&gt;();<br /><br />//get&amp;set方法,这里都省略了<br />...................</p>
<p>@Override<br />public String execute() throws Exception {</p>
<p>// 值为字符串<br />strMap.put("first", "zxx");<br />strMap.put("second", "lsx");<br />strMap.put("third", "wxh");</p>
<p>// 值为javabean对象<br />Person person = new Person("001", "zxx", 22);<br />person.setPhone(new Phone("apple", 18957157189L));</p>
<p>perMap.put("one", person);</p>
<p>person = new Person("002", "lsx", 25);<br />person.setPhone(new Phone("HTC", 18957157187L));<br />perMap.put("two", person);</p>
<p>// 数组处理<br />strArryMap.put("arr1", new String[] { "1", "310000", "hz" });<br />strArryMap.put("arr2", new String[] { "2", "310001", "xh" });<br />strArryMap.put("arr3", new String[] { "3", "310002", "sc" });<br /><br />//list对象处理<br />List&lt;Person&gt; list=new ArrayList&lt;Person&gt;(); <br />list.add(new Person("001", "zxx", 22));<br />list.add(new Person("002", "lsx", 25));<br />perLstMap.put("one", list);<br /><br />list=new ArrayList&lt;Person&gt;(); <br />list.add(new Person("003", "wlx", 26));<br />list.add(new Person("004", "hzx", 28));<br />perLstMap.put("two", list);</p>
<p>return "result";<br />}<br />}</p>
<p>2).struts.xml<br />&lt;!DOCTYPE struts PUBLIC<br />"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"<br />"<a href="http://struts.apache.org/dtds/struts-2.0.dtd">http://struts.apache.org/dtds/struts-2.0.dtd</a>"&gt;<br />&lt;struts&gt;<br />&lt;package name="express" extends="struts-default" namespace="/exp"&gt;<br />&lt;action name="expressMap" class="com.expre.struts2.action.ExpressMapAction"&gt;<br />&lt;result name="result"&gt;/jsp/strMap.jsp&lt;/result&gt;<br />&lt;/action&gt;<br />&lt;/package&gt;<br />&lt;/struts&gt;</p>
<p>3.web.xml<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app version="2.4" xmlns="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a>" xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"<br />xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a><br /><a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</a>"&gt;<br />&lt;filter&gt;<br />&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br />&lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher&lt;/filter-class&gt;<br />&lt;/filter&gt;<br />&lt;filter-mapping&gt;<br />&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br />&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />&lt;/filter-mapping&gt;</p>
<p>&lt;welcome-file-list&gt;<br />&lt;welcome-file&gt;/first.jsp&lt;/welcome-file&gt;<br />&lt;/welcome-file-list&gt;<br />&lt;/web-app&gt;</p>
<p>4).strMap.jsp<br />&lt;%@ page language="java" pageEncoding="utf-8"%&gt;<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;%@ taglib uri="/struts-tags" prefix="s"%&gt;<br />&lt;html&gt;<br />&lt;body&gt;<br />&lt;ul&gt;<br />&lt;li&gt;访问Map:&lt;s:property value="strMap"/&gt;&lt;/li&gt;<br />&lt;li&gt;访问Map中某个元素:<br />&lt;s:property value="strMap.first"/&gt; |<br />&lt;s:property value="strMap['second']"/&gt; |<br />&lt;s:property value="strMap[\'third\']"/&gt;<br />&lt;/li&gt;<br />&lt;li&gt;访问Map中所有的key:&lt;s:property value="strMap.keys"/&gt;&lt;/li&gt;<br />&lt;li&gt;访问Map中所有的value:&lt;s:property value="strMap.values"/&gt;&lt;/li&gt;<br />&lt;li&gt;访问容器的大小：<br />&lt;s:property value="strMap.size()"/&gt; |<br />&lt;s:property value="strMap.size"/&gt;//这是map特别的地方<br />&lt;/li&gt;<br /><br />&lt;li&gt;迭代循环取值,最简单<br />&lt;s:iterator value="strMap" id="entry"&gt;<br />&lt;s:property value="#entry"/&gt;{<br />key: &lt;s:property value="key"/&gt; <br />value:&lt;s:property value="value"/&gt;}|<br />&lt;/s:iterator&gt;<br />&lt;/li&gt;<br /><br />&lt;li&gt;迭代循环取值<br />&lt;s:iterator value="strMap.keySet()" id="key"&gt;<br />&lt;s:property value="key"/&gt;或&lt;s:property value="#key"/&gt;:<br />&lt;s:if test="strMap[#key]!=null"&gt; <br />&lt;s:property value="strMap.get(#key)"/&gt; |<br />&lt;/s:if&gt;<br />&lt;/s:iterator&gt;<br />&lt;/li&gt;<br /><br />&lt;li&gt;迭代循环取数组值<br />&lt;s:iterator value="strMap" id="entry"&gt;<br />&lt;s:property value="#entry"/&gt;{<br />&lt;s:property value="value[0]"/&gt; <br />&lt;s:property value="value[1]"/&gt; |<br />&lt;s:property value="value[2]"/&gt; }<br />&lt;/s:iterator&gt;<br />&lt;/li&gt;<br /><br />&lt;li&gt;迭代循环取对象值,最直接:<br />&lt;ul&gt;<br />&lt;s:iterator value="perMap" id="entry"&gt; <br />&lt;li&gt;<br />&lt;s:property value="#entry"/&gt; {<br />ID：&lt;s:property value="value.ID"/&gt; <br />Name：&lt;s:property value="value.name"/&gt; <br />Age：&lt;s:property value="value.age"/&gt; }|<br />&lt;/li&gt;<br />&lt;/s:iterator&gt;<br />&lt;/ul&gt;<br />&lt;/li&gt;<br /><br />&lt;li&gt;迭代循环取对象的属性值<br />&lt;s:iterator value="perMap.keySet()" id="key"&gt;<br />&lt;s:property value="#key"/&gt;:<br />&lt;s:iterator value="perMap.get(#key)"&gt;<br />&lt;s:property value="ID"/&gt;<br />&lt;s:property value="name"/&gt;<br />&lt;s:property value="phone.name"/&gt;<br />&lt;/s:iterator&gt;|<br />&lt;/s:iterator&gt;<br />&lt;/li&gt;<br /><br />&lt;li&gt;稍复杂的迭代<br />&lt;s:iterator value="perLstMap" id="entry"&gt; <br />&lt;s:set name="total" value="#entry.value.size"/&gt; <br />&lt;s:iterator value="#entry.value" status="s"&gt; <br />&lt;s:if test="#s.first"&gt;<br />&lt;s:property value="#entry.key"/&gt;:共${total}条<br />&lt;/s:if&gt; {<br />&lt;s:property value="ID"/&gt; |<br />&lt;s:property value="name"/&gt; |<br />&lt;s:property value="age"/&gt;<br />};<br />&lt;/s:iterator&gt; <br />&lt;/s:iterator&gt; <br />&lt;/li&gt;<br />&lt;/ul&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
<p>5).通过url：<a href="http://localhost:8080/struts2Jsp/exp/expressMap.action">http://localhost:8080/struts2Jsp/exp/expressMap.action</a>访问就会看到输出！</p>
<p>别的不多说，strMap.jsp已经把使用方法都写出来了！</p></div><img src ="http://www.blogjava.net/tinguo002/aggbug/384097.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tinguo002/" target="_blank">一堣而安</a> 2012-07-26 17:51 <a href="http://www.blogjava.net/tinguo002/archive/2012/07/26/384097.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ssh 整合的 基本包说明</title><link>http://www.blogjava.net/tinguo002/archive/2012/02/01/369159.html</link><dc:creator>一堣而安</dc:creator><author>一堣而安</author><pubDate>Wed, 01 Feb 2012 06:43:00 GMT</pubDate><guid>http://www.blogjava.net/tinguo002/archive/2012/02/01/369159.html</guid><wfw:comment>http://www.blogjava.net/tinguo002/comments/369159.html</wfw:comment><comments>http://www.blogjava.net/tinguo002/archive/2012/02/01/369159.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tinguo002/comments/commentRss/369159.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tinguo002/services/trackbacks/369159.html</trackback:ping><description><![CDATA[struts2 <br />commons-logging-1.0.4.jar 主要用于日志处理 <br />freemarker-2.3.8.jar <br />模板相关操作需要包 <br />ognl-2.6.11.jar ognl表达示所需包, <br />xwork-2.0.7.jar xwork核心包 <br /><br />struts2-core-2.0.14.jar struts2核心包 <br />struts2-spring-plugin-2.0.14.jar <br />struts2整合spring所需要的包 <br />如果还需要整合其它框架或者插件,再导入其它的包 <br /><br /><br /><br /><br />hibernate <br /><br />Hibernate3.jar hibernate核心包 <br />antlr-2.7.6.jar 一个语言转换工具 <br />Hibernate利用它实现 <br />HQL 到 SQL 的转换模板相关操作需要包 <br />commons-collections-3.1.jar collections Apache 的工具集 <br /><br />javassist-3.9.0.GA.jar 代码生成工具, <br />Hibernate用它在运行时扩展 Java类和实现，同cglib包 <br /><br />dom4j-1.6.1.jar dom4j XML 解析器 <br />jta-1.1.jar 标准的 JAVA 事务处理接口 <br /><br />slf4j-api-1.5.8.jar和slf4j-log4j12-1.5.0.jar hibernate使用的一个日志系统 <br />cglib.jar <br />CGLIB 字节码解释器 <br />asm.jar ASM字节码库 如果使用&#8220;cglib&#8221;则必要 <br />asm-attrs.jar ASM字节码库 <br />如果使用&#8220;cglib&#8221;则必要 <br />如果想使用缓存需要加入:ehcache.jar EHCache缓存 <br />连接数据库加入相关包.... <br /><br /><br /><br /><br /><br /><br />spring <br />spring-beans.jar 访问配置文件、创建和管理bean <br />以及进行Inversion of Control / Dependency Injection（IoC/DI）操作相关的所有类 <br /><br />spring-context.jar 可以找到使用Spring ApplicationContext特性时所需的全部类，JDNI <br />所需的全部类，instrumentation组件以及校验Validation 方面的相关类 <br />spring-core.jar Spring <br />框架基本的核心工具类 <br />spring-jdbc.jar 包含对Spring 对JDBC 数据访问进行封装的所有类 <br />spring-orm.jar <br />对映射框架的一些支持 <br />spring-tx.jar 提供对事务的支持 <br /><br />如果还需要AOP的支持，还要加上aspectjrt.jar和aspectjweaver.jar <br /><br /><br />其它可选包： <br /><br />commons-beanutils-1.6.jar <br />commons-dbcp-1.2.2.jar <br /><br />commons-pool-1.4.jar <br />commons-fileupload-1.2.1.jar <br />commons-io-1.4.jar <br /><br /> <img src ="http://www.blogjava.net/tinguo002/aggbug/369159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tinguo002/" target="_blank">一堣而安</a> 2012-02-01 14:43 <a href="http://www.blogjava.net/tinguo002/archive/2012/02/01/369159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>