一般添加在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 豪情 閱讀(176) |
評論 (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 豪情 閱讀(172) |
評論 (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 豪情 閱讀(1580) |
評論 (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 豪情 閱讀(277) |
評論 (0) |
編輯 收藏
來自于:http://www.aygfsteel.com/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 豪情 閱讀(858) |
評論 (0) |
編輯 收藏
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
posted @
2010-05-21 23:47 豪情 閱讀(1184) |
評論 (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 豪情 閱讀(198) |
評論 (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 豪情 閱讀(315) |
評論 (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 豪情 閱讀(249) |
評論 (0) |
編輯 收藏