Struts2之路第一天
打個(gè)廣告java1234資源分享
1.Struts2的核心是將請(qǐng)求與視圖分開(kāi),只需要改配置文件就可以改變視圖。
2.jsp文件報(bào)錯(cuò):Can not find the tag library descriptor for "/struts-tags"。
<!-- <%@ taglib prefix="c" uri="/struts-tags" %>會(huì)報(bào)錯(cuò),錯(cuò)誤提示為: Can not find
the tag library descriptor for "/struts-tags" struts-core-xxx.jar包不是struts2的需要在web中配置:
-->
我之后又啟動(dòng)服務(wù)器時(shí),報(bào)錯(cuò)org xml sax saxparseexception前言中不允許有內(nèi)容,當(dāng)我把加進(jìn)去的這段代碼刪了之后,兩個(gè)錯(cuò)誤都沒(méi)了。
3.修改默認(rèn)編碼 Preferences->搜索jsp->JSP Files 將Encoding改為 ISO 10646/Unicode(UTF-8),IANA就會(huì)變?yōu)閁TF-8.
4.Struts1里面action對(duì)象只有一個(gè),Struts2里面每次訪問(wèn)都會(huì)創(chuàng)建一個(gè)對(duì)象
5.路徑問(wèn)題,當(dāng)在struts.xml里面沒(méi)有找到對(duì)應(yīng)的namespace時(shí),會(huì)返回到web.xml,找到welcome file,將默認(rèn)的歡迎界面返回到客戶端。struts2中的路徑問(wèn)題是根據(jù)action的路徑而不是jsp路徑來(lái)確定,所以盡量不要使用相對(duì)路徑。可以在jsp頁(yè)面如加入
<% String Path = request,getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>再在head標(biāo)簽中加入
<base href="<%=basePath%>"/>這樣,該文檔中所有href鏈接前面均加上了http://站點(diǎn)名:端口號(hào)/項(xiàng)目名/,如http://localhost:8080/Struts2_0100/
6.Action 執(zhí)行的時(shí)候不一定要執(zhí)行execute方法。可以使用動(dòng)態(tài)方法調(diào)用DMI,有兩種方式
? a.通過(guò)配置文件struts.xml中action的method屬性指定調(diào)用方法,如:
???????? <action?? method="調(diào)用方法名">;
???? b.在URL中動(dòng)態(tài)指定調(diào)用方法,使用感嘆號(hào)“!”將action名和調(diào)用方法名分割開(kāi),如:
???????? http://localhost:8080/Struts2_DMI/user!add
7.通配符*
通配符*表示所有,{1}表示第一個(gè)*代表的字符串,{2}表示第二個(gè)*代表的字符串。如果使用通配符*,要先約定好命名規(guī)則,“約定優(yōu)于配置” 。
8.jdk1.5和jdk1.6的區(qū)別在jdk1.5中,如果實(shí)現(xiàn)的是一個(gè)接口,就不能寫(xiě)@override,在jdk1.6中可以寫(xiě)。設(shè)置jdk,proporties --> Java Compiler:在Compiler compliance lever中選擇合適的jdk版本,注意Tomcat里面也弄成一樣的。
9.用Action 的屬性接收參數(shù),Action里面的成員變量和URL地址里面的參數(shù)可以是一一對(duì)應(yīng)的。Struts2會(huì)自動(dòng)調(diào)用方法把參數(shù)值傳遞到成員變量里,所以getter方法名要與變量名一致。
10.DomainModel接收參數(shù)。DomainModel是域模型,是真正存在的實(shí)體概念。執(zhí)行action時(shí)會(huì)自動(dòng)生成DomainModel對(duì)象,接收參數(shù)。當(dāng)參數(shù)個(gè)數(shù)與DomainModel對(duì)象的屬性不一致時(shí),我們可以創(chuàng)建VO。action執(zhí)行時(shí),參數(shù)會(huì)先與VO對(duì)象匹配,然后可以用new DomainModel(VO),將VO整體的交到DoainModel里面.
11.使用ModelDriver接收參數(shù),實(shí)現(xiàn)ModelDriver接口,調(diào)用getModel方法,返回一個(gè)DomainModel實(shí)體對(duì)象
12.剛剛新建一個(gè)struts2的項(xiàng)目時(shí),用的是2.3.15的版本,只導(dǎo)入七個(gè)jar包時(shí)報(bào)錯(cuò)java.lang.RuntimeException: java.lang.reflect.InvocationTargetException和java.lang.NoClassDefFoundError:org/apache/commons/lang/StringUtils這是因?yàn)槿鄙賑ommons-lang3-3.1.jar和javassist-3.11.0.GA.jar這兩個(gè)jar包造成的。
轉(zhuǎn)載于:https://www.cnblogs.com/ligui989/p/3170053.html
總結(jié)
以上是生活随笔為你收集整理的Struts2之路第一天的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android的Notification
- 下一篇: POJ 2983