一般添加在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 豪情 阅读(168) |
评论 (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");
posted @
2010-05-24 23:33 豪情 阅读(168) |
评论 (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 豪情 阅读(1574) |
评论 (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 豪情 阅读(273) |
评论 (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 豪情 阅读(851) |
评论 (0) |
编辑 收藏
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
posted @
2010-05-21 23:47 豪情 阅读(1175) |
评论 (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 豪情 阅读(193) |
评论 (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 豪情 阅读(309) |
评论 (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 豪情 阅读(243) |
评论 (0) |
编辑 收藏