随笔-29  评论-5  文章-0  trackbacks-0
 
一般添加在tomcat
x:\apache-tomcat-5.5.25\conf\server.xml
host标签内:
<Context path="url-a" docBase="url-b" debug="0"/>
这一个虚拟路径配置,path相当于http://localhost:8080/url-a
docBase是真实的开发目录
debug表示是否调试
posted @ 2010-05-27 10:06 豪情 阅读(162) | 评论 (0)编辑 收藏
ActionContext context = ActionContext.getContext();
Map request 
= (Map)context.get("request");
Map session 
= context.getSession();
Map application 
= context.getApplication();
request.put(
"s", str);
request.put(
"map", map);
request.put(
"greeting""欢迎访问jikey的Blog");

Struts 2深入详解

posted @ 2010-05-24 23:33 豪情 阅读(164) | 评论 (0)编辑 收藏
1.设置整个项目使用el表达式,需要在web.xml中加上 (控制一个项目)
< jsp-config >
< jsp-property-group >
< el-ignored >false < / el-ignored >
< /jsp-property-group >
< / jsp-config >

2.设置某个jsp页面使用el表达式,需要在jsp页面加上(控制单个页面)
<%@ page isELIgnored="false"%>

3.看你的web.xml文件中头的引用应该是 2.4.xsd

${requestScope.hello}
sdf
将JSP页面中的<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>改为<%@ taglib uri=http://java.sun.com/jstl/core_rt prefix="c"%>即可。

发现一个el表达式在JSP2.0中不起作用的问题。反复调试多次,发现是web.xml中出了问题。猜测是版本的问题,但只知道了如何修改,不知道为什么那样修改。

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version
="2.4">
2.4版本默认启用el表达式,如果使用2.5版本,默认el表达式是关闭的

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" version="2.5" 
    xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee   
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
那么对应2.5的web.xml -->  jsp页面里应该增加
<%@ page isELIgnored="false"%>

发现原因:一句话,凡是部署描述文件遵循Servlet2.4规范的WEB应用,EL表达式的计算默认是启用的,而未遵循的,则EL表达式的计算默认是禁用的。

所以解决方案还可以是:将web.xml中的DTD(文档类型定义)改问2.4的版本


posted @ 2010-05-24 15:31 豪情 阅读(1567) | 评论 (0)编辑 收藏
来自于:http://shaxianwei.javaeye.com/blog/650902
<span style="color: rgb(0, 128, 0);"><li>property: <s:property value="username"/> </li>
<li>property 取值为字符串: <s:property value="'username'"/> </li>
<li>property 设定默认值: <s:property value="admin" default="管理员"/> </li>
<li>property 设定HTML: <s:property value="'<hr/>'" escape="false"/> </li>
<hr />
<li>set 设定adminName值(默认为 request 和 ActionContext): <s:set var="adminName" value="username"
/></li>

<li>set 从request取值: <s:property value="#request.adminName" /></li>
<li>set 从ActionContext取值: <s:property value="#adminName" /></li>

<%--<li>set 设定范围: <s:set name="adminPassword" value="password" scope="page"/></li>
<li>set 从相应范围取值: <%=pageContext.getAttribute("adminPassword"%></li>
--%>
<li>set 设定var,范围为ActionContext: <s:set var="adminPassword" value="password"
scope
="session"/></li>
<li>set 使用#取值: <s:property value="#adminPassword"/> </li>
<li>set 从相应范围取值: <s:property value="#session.adminPassword"/> </li>

<hr />

<%--<li>push:<s:set name="myDog" value="new com.bjsxt.struts2.ognl.Dog('oudy')"></s:set></li>
<li>
push:
<s:push value="#myDog">
    
<s:property value="name"/>
</s:push>
</li>
<li>push: <s:property value="name"/></li>
--%>

<hr />
<li>bean 定义bean,并使用 param来设定新的属性值:
    
<s:bean name="com.bjsxt.struts2.tags.Dog" >
        
<s:param name="name" value="'pp'"></s:param>
        
<s:property value="name"/>
       
    
</s:bean>
   
   
</li>

<li>bean 查看debug情况:
    
<s:bean name="com.bjsxt.struts2.tags.Dog" var="myDog">
        
<s:param name="name" value="'oudy'"></s:param>
    
</s:bean>
    拿出值:
    
<s:property value="#myDog.name"/>
   
</li>
<hr />

<li>include _include1.html 包含静态英文文件
    
<s:include value="/_include1.html"></s:include>
</li>

<li>include _include2.html 包含静态中文文件
    
<s:include value="/_include2.html"></s:include>
</li>

<li>include _include1.html 包含静态英文文件,说明%用法
    
<s:set var="incPage" value="%{'/_include1.html'}" />
    
<s:include value="%{#incPage}"></s:include>
</li>


<hr />

<li>if elseif else:
    age = 
<s:property value="#parameters.age[0]" /> <br />
    
<s:set var="age" value="#parameters.age[0]" />
    
<s:if test="#age < 0">wrong age!</s:if>
    
<s:elseif test="#parameters.age[0] < 20">too young!</s:elseif>
    
<s:else>yeah!</s:else><br />
    
<s:if test="#parameters.aaa == null">null</s:if>
</li>

<hr />

<li>遍历集合:<br />
<s:iterator value="{1, 2, 3}" >
    
<s:property/> |
</s:iterator>
</li>
<li>自定义变量:<br />
<s:iterator value="{'aaa', 'bbb', 'ccc'}" var="x">
    
<s:property value="#x.toUpperCase()"/> |
</s:iterator>
</li>
<li>使用status:<br />
<s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status">
    
<s:property/> |
    遍历过的元素总数:
<s:property value="#status.count"/> |
    遍历过的元素索引:
<s:property value="#status.index"/> |
    当前是偶数?:
<s:property value="#status.even"/> |
    当前是奇数?:
<s:property value="#status.odd"/> |
    是第一个元素吗?:
<s:property value="#status.first"/> |
    是最后一个元素吗?:
<s:property value="#status.last"/>
    
<br />
</s:iterator>

</li>

<li>
<s:iterator value="#{1:'a', 2:'b', 3:'c'}" >
    
<s:property value="key"/> | <s:property value="value"/> <br />
</s:iterator>
</li>

<li>
<s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
    
<s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
</s:iterator>
</li>

<li>

<s:fielderror fieldName="fielderror.test" theme="simple"></s:fielderror>

</li></span>

posted @ 2010-05-21 23:51 豪情 阅读(267) | 评论 (0)编辑 收藏
来自于:http://www.blogjava.net/michaellee/archive/2009/07/14/286733.html
struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等 以下几个简单的demo:
s:iterator 标签有3个属性:
    value:被迭代的集合
    id   :指定集合里面的元素的id
    status 迭代元素的索引

1:jsp页面定义元素写法 数组或list

   1. 
<s:iterator value="{'1','2','3','4','5'}" id='number'>
   2.     
<s:property value='number'/>A
   3. 
</s:iterator>

打印结果为:  1A2A3A4A5A
上面的方法我在jsp文件里执行没有成功;这是另一种写法:
<%
      List list 
= new ArrayList();
      list.add(
"Max");
      list.add(
"Michael");
      list.add(
"Scott");
      list.add(
"Jeffry");
      list.add(
"Joe");
      request.setAttribute(
"names", list);
   
%>

<h3>Names:</h3>
  
<!--
            1、此处的空property 元素用于获得当前iterator的值
            2、status被设成stuts,在 iterator的里面就可以通过#stuts取得 IteratorStatus的对象。IteratorStatus类包含当前序号信息,
                                        如是否第一个或最后一个,是否为奇数序号。这些信息在我们做格式化的时候,显得非常有用。
   
-->
    
<ol>
        
<s:iterator value="#request.names" status="stuts">
            
<s:if test="#stuts.odd == true">
                
<li>White <s:property/></li>
            
</s:if>
            
<s:else>
                
<li style="background-color:blue"><s:property/></li>
            
</s:else>
        
</s:iterator>
    
</ol>

2: 索引的用法
如果指定了status,每次的迭代数据都有IteratorStatus的实例,它有以下几个方法
int getCount()返回当前迭代了几个元素
int getIndex()返回当前元素索引
boolean isEven()当然的索引是否偶数
boolean isFirst()当前是否第一个元素
boolean isLast()
boolean isOdd() 当前元素索引是否奇数

   1. 
<s:iterator value="{'a','b','c'}" id='char' status='st'>
   2.     
<s:if test="#st.Even">
   3.         现在的索引是奇数为:
<s:property value='#st.index'/>
   4.     
</s:if>
   5.     当前元素值:
<s:property value='char'/>
   6. 
</s:iterator>

3:遍历map
value可以直接定义为:

   1. value="#{"1":"a","2":"b"}"

每个元素以都好隔开。元素之间的key和value 冒号隔开
value 也可以是数据栈里面的java.util.Map对象
遍历写法如下:

   1. 
<s:iterator value="map" id="id" status="st">
   2.      key : 
<s:property value='key'/>
   3.      value:
<s:property vlaue='value'/>
   4. 
</s:iterator>

当然key 和value 都可以使java 的 Object

3:遍历数据栈.简单的List类,
List
<Attr> 
class Attr{String attrName;String getAttrName(){return "123";}}

   1. 
<s:iterator value="label" id="id">
   2.     
<s:property value="#id.attrName" />
   3. 
</s:iterator>

当然 value 还可以写成 value="%{label}" label 可以有.操作
label的属性List 可以写成value="%{label.list}"  相当于:getLabel().getList();

4:遍历2个list;
List
<AttrName> attrN {color,size,style}
List
<AttrValue> attrV {red,20,gay}
这2个 list的元素是一一对应的,一个attrN对应一个attrV

   1. 
<s:iterator value="%{attrN }" id="id"   status="status">
   2.  index    is : 
<s:property value='status.index'/>
   3.  attrName is : 
<s:property value='id'/> or <s:property value='%{id}'/> 
   4.  attrName is : 
<s:property value='%{attrV[#status.index]}'/>
   5. 
</s:iterator>

posted @ 2010-05-21 23:49 豪情 阅读(845) | 评论 (0)编辑 收藏
<filter-mapping>
    
<filter-name>struts2</filter-name>
    
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
   
posted @ 2010-05-21 23:47 豪情 阅读(1172) | 评论 (1)编辑 收藏
<package name="tutorial" extends="struts-default">
        
<action name="HelloWorld" class="tutorial.HelloWorld">
            
<result>HelloWorld.jsp</result>
        
</action>
    
</package>
1、包名:tutorial;
2、该包继承了父包“struts- default”;
3、该包有一个Action类:tutorial.HelloWorld,其名称为“HelloWorld”,其转向的视图为:HelloWorld.jsp
posted @ 2010-05-21 23:43 豪情 阅读(187) | 评论 (0)编辑 收藏
<!-- 指定Web应用的默认编码集,相当于调用 HttpServletRequest的 setCharacterEncoding方法 -->  
<constant name="struts.i18n.encoding" value="UTF-8" />  
<!--   
该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理。  
如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。  
 
-->  
<constant name="struts.action.extension" value="do" />  
<!-- 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 -->  
<constant name="struts.serve.static.browserCache " value="false" />  
<!-- 当 struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 -->  
<constant name="struts.configuration.xml.reload" value="true" />  
<!-- 开发模式下使用,这样可以打印出更详细的错误信息 -->  
<constant name="struts.devMode" value="true" />  
<!-- 默认的视图主题 -->  
<constant name="struts.ui.theme" value="simple" />  
<!-- 该属性指定Struts 2中的action由Spring容器创建  -->  
<constant name="struts.objectFactory" value="spring" /> 

来自于:http://wing123.javaeye.com/blog/352596

posted @ 2010-05-21 23:35 豪情 阅读(304) | 评论 (0)编辑 收藏

来自于:http://shaxianwei.javaeye.com/blog/650902

<span style="color: rgb(0, 128, 0);"><li>property: <s:property value="username"/> </li>
        
<li>property 取值为字符串: <s:property value="'username'"/> </li>
        
<li>property 设定默认值: <s:property value="admin" default="管理员"/> </li>
        
<li>property 设定HTML: <s:property value="'<hr/>'" escape="false"/> </li>
        
<hr />
        
<li>set 设定adminName值(默认为request 和 ActionContext): <s:set var="adminName" value="username"
/></li>
       
        
<li>set 从request取值: <s:property value="#request.adminName" /></li>
        
<li>set 从ActionContext取值: <s:property value="#adminName" /></li>
       
        
<%--<li>set 设定范围: <s:set name="adminPassword" value="password" scope="page"/></li>
        
<li>set 从相应范围取值: <%=pageContext.getAttribute("adminPassword"%></li>
        
--%>
        
<li>set 设定var,范围为ActionContext: <s:set var="adminPassword" value="password"
scope
="session"/></li>
        
<li>set 使用#取值: <s:property value="#adminPassword"/> </li>
        
<li>set 从相应范围取值: <s:property value="#session.adminPassword"/> </li>
       
        
<hr />
       
        
<%--<li>push:<s:set name="myDog" value="new com.bjsxt.struts2.ognl.Dog('oudy')"></s:set></li>
        
<li>
        push:
<s:push value="#myDog">
            
<s:property value="name"/>
        
</s:push>
        
</li>
        
<li>push: <s:property value="name"/></li>
        
--%>
       
        
<hr />
        
<li>bean 定义bean,并使用param来设定新的属性值:
            
<s:bean name="com.bjsxt.struts2.tags.Dog" >
                
<s:param name="name" value="'pp'"></s:param>
                
<s:property value="name"/>
               
            
</s:bean>
           
           
        
</li>
       
        
<li>bean 查看debug情况:
            
<s:bean name="com.bjsxt.struts2.tags.Dog" var="myDog">
                
<s:param name="name" value="'oudy'"></s:param>
            
</s:bean>
            拿出值:
            
<s:property value="#myDog.name"/>
           
        
</li>
        
<hr />
       
        
<li>include _include1.html 包含静态英文文件
            
<s:include value="/_include1.html"></s:include>
        
</li>
       
        
<li>include _include2.html 包含静态中文文件
            
<s:include value="/_include2.html"></s:include>
        
</li>
       
        
<li>include _include1.html 包含静态英文文件,说明%用法
            
<s:set var="incPage" value="%{'/_include1.html'}" />
            
<s:include value="%{#incPage}"></s:include>
        
</li>
       
       
        
<hr />
       
        
<li>if elseif else:
            age 
= <s:property value="#parameters.age[0]" /> <br />
            
<s:set var="age" value="#parameters.age[0]" />
            
<s:if test="#age < 0">wrong age!</s:if>
            
<s:elseif test="#parameters.age[0] < 20">too young!</s:elseif>
            
<s:else>yeah!</s:else><br />
            
<s:if test="#parameters.aaa == null">null</s:if>
        
</li>
       
        
<hr />
       
        
<li>遍历集合:<br />
        
<s:iterator value="{1, 2, 3}" >
            
<s:property/> |
        
</s:iterator>
        
</li>
        
<li>自定义变量:<br />
        
<s:iterator value="{'aaa', 'bbb', 'ccc'}" var="x">
            
<s:property value="#x.toUpperCase()"/> |
        
</s:iterator>
        
</li>
        
<li>使用status:<br />
        
<s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status">
            
<s:property/> |
            遍历过的元素总数:
<s:property value="#status.count"/> |
            遍历过的元素索引:
<s:property value="#status.index"/> |
            当前是偶数?:
<s:property value="#status.even"/> |
            当前是奇数?:
<s:property value="#status.odd"/> |
            是第一个元素吗?:
<s:property value="#status.first"/> |
            是最后一个元素吗?:
<s:property value="#status.last"/>
            
<br />
        
</s:iterator>
       
        
</li>
       
        
<li>
        
<s:iterator value="#{1:'a', 2:'b', 3:'c'}" >
            
<s:property value="key"/> | <s:property value="value"/> <br />
        
</s:iterator>
        
</li>
       
        
<li>
        
<s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
            
<s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
        
</s:iterator>
        
</li>
       
        
<li>
       
        
<s:fielderror fieldName="fielderror.test" theme="simple"></s:fielderror>
       
        
</li></span>
posted @ 2010-05-21 22:56 豪情 阅读(240) | 评论 (0)编辑 收藏
仅列出标题
共3页: 上一页 1 2 3