struts2 学习笔记(未完待续)
来源:互联网 发布:忘不了脑营养 知乎 编辑:程序博客网 时间:2024/05/01 19:31
1、在strut2下的apps中有strut2-blank项目,可以拷贝里面的jar包以及 配置文件
2、<constant name="struts.devMode" value="true"/>定义开发模式的 目的是:修改配置文件后不用重新启动服务器。
3、在myeclipse中显示项目的物理结构:window->show view- >General->Navigator(航海家,领航员)
4、使用自己的jres的设置方法:preferences->java->Installed Jres
5、用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter(但是可能会有中文乱码,这是strut2的一个bug),用以前的拦截器就没有乱码。
6、在myeclipse中查看源码:在jar中右键properties->java source attachment->external folder(文件夹)->E:/java资料/struts- 2.3.4.1/src/core/src/main/java
7、关联文档:在jar中右键properties->javadoc location ->(设置好后按F1就可以查看相关的文档了)
8、如果新建项目的话最好拷贝以前的存在的项目,这样就不用重新配置了 。
9、在不联网的情况下,设置struts中xml自动提示:首先将strut2- core-2.3.4.1.jar解压;window->preferences->xml catalog- >add:location中为:解压文件strut-2.3.dtd;keyType:URI; Key:http://struts.apache.org/dtds/struts-2.3.dtd
10、如果result没有写name属性,action没有class属性也可以,例如:
<action name="hello">
<result>/a.jsp</result>
</action>
输入hello后就会跳到a.jsp
解析:struts2默认会执行ActionSupport的的execute()方法,而且execute()默认返回SUCCESS。
11、项目做好以后(没有启动服务器),右击->debug as->myeclipse server application->tomcat 6.x
12、<result name="success">success可以省略,即如果没有name属性的 话,就是默认success。
13、namespace=""时,访问路径/任意/任意/.../任意/action的名字,作 用是:如果在其他namespace中没有找到action的话就可以在 namespace=""的package包中找。
14、在preference中修改jsp的默认编码:files and editors- >jsp:Encoding改为:chinese,national Standard
15、struts1中,很多客户端共享一个action对象,得做很好的线程同步控制;而strut2每次访问action的时候都会new一个action,所以不会发生线程同步的问题。
16、从xwork的api文档或者xwork的源代码(可以下载)可以看出:action接口有ERROR,INPUT,LOGIN,SUCCESS,NONE静态常量,static final String SUCCESS="success";而且actionsupport类实现了action接口,所以无论是实现了action接口还是继承了actionsupport类,都可以直接使用这些静态常量。因为ActionSupport类有很多方法(比如:execute()),所以实际开发都继承ActionSupport类。
17、如果直接在地址栏输入.../项目名/:则去配置文件找namespace="/"的package,如果没有响应的package,这会交给tomcat去处理(web.xml),找到默认的欢迎页面。
18、最好实用绝对路径!
19、路径问题
因为action存在命名空间的问题,所以action和jsp之间,不同命名空间之间action之间的跳转容易出现路径不对的问题。
例如:namespace="path"的action跳转到根路径下的a.jsp,在a.jsp中有<a href="b.jsp">tesgt</a>虽然a.jsp和b.jsp都在根目录下,但是此时点击超链接并不能跳到b.jsp中去!因为此时相当于.../path/a.action跳到.../b.jsp。这样会发生错误!
解决办法:用绝对路径,<a href="<%=request.geContextPath()%>/b.jsp">test</a>
用绝对路径<a href="<%=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"%>b.jsp">
用myeclipse中jsp提供的标签<base href="<%=basePath%>">,这样就不用前两个绝对路径了(因为页面所有的链接会默认加上basPath),这样就可以随心所欲得 使用相对或者绝对路径了。
20、 动态方法调用
<action name="user" class="user.action.UserAction">
</action>
不用写method属性的情况下,用user!add访问add()方法,用 user!delete访问delete()方法!
21、使用通配符可以使配置降到最低.例如:
<action name="*_*" class="action.{1}Action" method="{2}">
<result>/{1}_{2}_success.jsp</result>
</action>
22、如果有多个匹配的action,则应该匹配精确的那个,但是如果都有*的话(*个数可以不相等),则应该匹配前边的那个。
23、关于action用属性接收参数
可以自动类型转换,不用全部写能String类型的。
属性名可以随便起,但是set和get方法的名字必须和接收参数的名字一致。
24、用domainModel接收参数
在action里,
private User user;
set、get方法;
传参数的时候用user.name&user.sex等。
但是传递的参数中User中没有相应的属性的话(比如重复输入确认密码),此方法就不可以用了。此时,可以用VO或者DTO来接收,和domainModel大体相似,里面定义各种接 收参数,在action接收并处理以后可以再把其中的属性值再次包装到User的实体类中。
25、用ModelDriven接收参数(不常用)
public class UserAction implements ModelDriven<User>{
private User user=new User();
public User getModel(){
return user;
}
public String add(){
System.out.println(user.getName());
}
}
26、上边的三种接收参数的方法中,domainModel最常用。
27、配置文件的配置常量可以在org.apache.struts2包的 default.properties中找到。
28、struts-tags.tld在META-INF下
29、仔细复习19、20课的"简单数据验证"视频。
30、关于一个form可以有多个aciton请复习 Struts2_1200_AccessWebElements
31、仔细复习Struts2_1200_AccessWebElements,理解ActionContext(即 Stack Context)
32、仔细复习视频21、22
33、仔细复习视频23关于模块包含:<include file="struts11.xml"/>
34、关于默认action详见视频24
35、dispatcher:服务器跳转到jsp
redirect :客户端跳转到jsp
chain :服务器跳转到action
redirectAction:客户端跳转到action
36、关于chain跳转到别的包里的action的方法见视频29
37、关于Global_result和extends的作用见:视频30
38、action里的属性值都在值栈里。
39、一次request一个值栈,所以服务器跳转共用一个值栈,所以多个action之间服务器跳转可以公用一个值栈。可以用<s:debug/>查看。见视频32
40、在<result>中,只有客户端跳转才需要传递参数,${}表达式取的是值栈里的值。
41、每次访问action都会new一个action(实例化),所以可以在构造方法里写点东西。
42、user.xxx只有传,才会构造,想初始化domain.model可以自己new,也可以传参数值,但这时需要保持参数为空的构造方法。
43、访问值栈里对象的普通方法、访问值栈里action的普通方法、访问静态方法、静态属性、Math的方法、普通类的构造方法见:视频39
44、访问集合见:视频40
45、投影(过滤)见:视频41
46、[]访问值栈的action,见视频42,如果chain的话,多个action的属性a一样的话,<s:property value="a"/>则值是最后访问的那个action的a的值;<s:property value="[0].a"/>是最后访问的那个action的a的值,<s:property value="[1].a"/>是倒数第二个访问的那个action的a的值,<s:property value="[2].a"/>是倒数第三个访问的那个action的a的值;总之:[]会从上往下(从值栈的角度看)找满足条件的第一个。
47、property标签
property: <s:property value="username"/>
property 取值为字符串: <s:property value="'username'"/>结果为username
property 设定默认值: <s:property value="admin" default="管理员"/>如果没有admin的话,就会显示"管理员"
property 设定HTML: <s:property value="'<hr/>'" escape="false"/>如果为false,则会显示html效果(一条线),如果为true,显示为"<hr/>",默认 为true。
48、<s:set/>
根据文档id,name已经不建议使用,用var。默认的scope是actionContext(即stackContext),见视频45
49、<s:bean>见视频46、47.自习的看。
50、<s:include>会出现乱码问题,尽量少用。
51、"%{x}"的作用是将x当做ognl表达式来处理,而不是把x当做字符串处理。视频48
52、<s:property>中value的值就是ognl表达式;而<s:inlude>中的value就是String类型的,如果要使用ognl表达式则必须用%{x}将x作为ognl表达式来处理。
53、让提示速度加快的方法:java-》editor-》content assist的anto activation delay的值设置小点。
54、parameters见视频50
55、iterator、map、list见视频51
56、theme见视频52,除了<s:fielderror>需要特殊处理外(修改配置文件或者修改css等等),其他的ui标签加上theme="simple"(默认是xhtml)就行了或者修改 struts.ui.theme=xhtml。(可以查看源代码)
57、设计约定(编码规定)
a)原则:简单就是美
b)库名:项目名
c)表明:_Model名
d)字段:保持和属性名一致(注意和数据库的冲突)
e)用层划分包:com.zhujiaxing.bbs.action
model(bean)
service
dto(vo)
f)Action :XXXAction
g)配置文件:*_*
h)namespace:/ ,/admin(后台登陆)等等
i)配置文件中的package:比如:action,adminAction
如果你是项目的组长,需要写约定文档或者直接给组员一个项目模板,要求他们命名规范根据模板来就行了。
58、
2、<constant name="struts.devMode" value="true"/>定义开发模式的 目的是:修改配置文件后不用重新启动服务器。
3、在myeclipse中显示项目的物理结构:window->show view- >General->Navigator(航海家,领航员)
4、使用自己的jres的设置方法:preferences->java->Installed Jres
5、用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter(但是可能会有中文乱码,这是strut2的一个bug),用以前的拦截器就没有乱码。
6、在myeclipse中查看源码:在jar中右键properties->java source attachment->external folder(文件夹)->E:/java资料/struts- 2.3.4.1/src/core/src/main/java
7、关联文档:在jar中右键properties->javadoc location ->(设置好后按F1就可以查看相关的文档了)
8、如果新建项目的话最好拷贝以前的存在的项目,这样就不用重新配置了 。
9、在不联网的情况下,设置struts中xml自动提示:首先将strut2- core-2.3.4.1.jar解压;window->preferences->xml catalog- >add:location中为:解压文件strut-2.3.dtd;keyType:URI; Key:http://struts.apache.org/dtds/struts-2.3.dtd
10、如果result没有写name属性,action没有class属性也可以,例如:
<action name="hello">
<result>/a.jsp</result>
</action>
输入hello后就会跳到a.jsp
解析:struts2默认会执行ActionSupport的的execute()方法,而且execute()默认返回SUCCESS。
11、项目做好以后(没有启动服务器),右击->debug as->myeclipse server application->tomcat 6.x
12、<result name="success">success可以省略,即如果没有name属性的 话,就是默认success。
13、namespace=""时,访问路径/任意/任意/.../任意/action的名字,作 用是:如果在其他namespace中没有找到action的话就可以在 namespace=""的package包中找。
14、在preference中修改jsp的默认编码:files and editors- >jsp:Encoding改为:chinese,national Standard
15、struts1中,很多客户端共享一个action对象,得做很好的线程同步控制;而strut2每次访问action的时候都会new一个action,所以不会发生线程同步的问题。
16、从xwork的api文档或者xwork的源代码(可以下载)可以看出:action接口有ERROR,INPUT,LOGIN,SUCCESS,NONE静态常量,static final String SUCCESS="success";而且actionsupport类实现了action接口,所以无论是实现了action接口还是继承了actionsupport类,都可以直接使用这些静态常量。因为ActionSupport类有很多方法(比如:execute()),所以实际开发都继承ActionSupport类。
17、如果直接在地址栏输入.../项目名/:则去配置文件找namespace="/"的package,如果没有响应的package,这会交给tomcat去处理(web.xml),找到默认的欢迎页面。
18、最好实用绝对路径!
19、路径问题
因为action存在命名空间的问题,所以action和jsp之间,不同命名空间之间action之间的跳转容易出现路径不对的问题。
例如:namespace="path"的action跳转到根路径下的a.jsp,在a.jsp中有<a href="b.jsp">tesgt</a>虽然a.jsp和b.jsp都在根目录下,但是此时点击超链接并不能跳到b.jsp中去!因为此时相当于.../path/a.action跳到.../b.jsp。这样会发生错误!
解决办法:用绝对路径,<a href="<%=request.geContextPath()%>/b.jsp">test</a>
用绝对路径<a href="<%=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"%>b.jsp">
用myeclipse中jsp提供的标签<base href="<%=basePath%>">,这样就不用前两个绝对路径了(因为页面所有的链接会默认加上basPath),这样就可以随心所欲得 使用相对或者绝对路径了。
20、 动态方法调用
<action name="user" class="user.action.UserAction">
</action>
不用写method属性的情况下,用user!add访问add()方法,用 user!delete访问delete()方法!
21、使用通配符可以使配置降到最低.例如:
<action name="*_*" class="action.{1}Action" method="{2}">
<result>/{1}_{2}_success.jsp</result>
</action>
22、如果有多个匹配的action,则应该匹配精确的那个,但是如果都有*的话(*个数可以不相等),则应该匹配前边的那个。
23、关于action用属性接收参数
可以自动类型转换,不用全部写能String类型的。
属性名可以随便起,但是set和get方法的名字必须和接收参数的名字一致。
24、用domainModel接收参数
在action里,
private User user;
set、get方法;
传参数的时候用user.name&user.sex等。
但是传递的参数中User中没有相应的属性的话(比如重复输入确认密码),此方法就不可以用了。此时,可以用VO或者DTO来接收,和domainModel大体相似,里面定义各种接 收参数,在action接收并处理以后可以再把其中的属性值再次包装到User的实体类中。
25、用ModelDriven接收参数(不常用)
public class UserAction implements ModelDriven<User>{
private User user=new User();
public User getModel(){
return user;
}
public String add(){
System.out.println(user.getName());
}
}
26、上边的三种接收参数的方法中,domainModel最常用。
27、配置文件的配置常量可以在org.apache.struts2包的 default.properties中找到。
28、struts-tags.tld在META-INF下
29、仔细复习19、20课的"简单数据验证"视频。
30、关于一个form可以有多个aciton请复习 Struts2_1200_AccessWebElements
31、仔细复习Struts2_1200_AccessWebElements,理解ActionContext(即 Stack Context)
32、仔细复习视频21、22
33、仔细复习视频23关于模块包含:<include file="struts11.xml"/>
34、关于默认action详见视频24
35、dispatcher:服务器跳转到jsp
redirect :客户端跳转到jsp
chain :服务器跳转到action
redirectAction:客户端跳转到action
36、关于chain跳转到别的包里的action的方法见视频29
37、关于Global_result和extends的作用见:视频30
38、action里的属性值都在值栈里。
39、一次request一个值栈,所以服务器跳转共用一个值栈,所以多个action之间服务器跳转可以公用一个值栈。可以用<s:debug/>查看。见视频32
40、在<result>中,只有客户端跳转才需要传递参数,${}表达式取的是值栈里的值。
41、每次访问action都会new一个action(实例化),所以可以在构造方法里写点东西。
42、user.xxx只有传,才会构造,想初始化domain.model可以自己new,也可以传参数值,但这时需要保持参数为空的构造方法。
43、访问值栈里对象的普通方法、访问值栈里action的普通方法、访问静态方法、静态属性、Math的方法、普通类的构造方法见:视频39
44、访问集合见:视频40
45、投影(过滤)见:视频41
46、[]访问值栈的action,见视频42,如果chain的话,多个action的属性a一样的话,<s:property value="a"/>则值是最后访问的那个action的a的值;<s:property value="[0].a"/>是最后访问的那个action的a的值,<s:property value="[1].a"/>是倒数第二个访问的那个action的a的值,<s:property value="[2].a"/>是倒数第三个访问的那个action的a的值;总之:[]会从上往下(从值栈的角度看)找满足条件的第一个。
47、property标签
property: <s:property value="username"/>
property 取值为字符串: <s:property value="'username'"/>结果为username
property 设定默认值: <s:property value="admin" default="管理员"/>如果没有admin的话,就会显示"管理员"
property 设定HTML: <s:property value="'<hr/>'" escape="false"/>如果为false,则会显示html效果(一条线),如果为true,显示为"<hr/>",默认 为true。
48、<s:set/>
根据文档id,name已经不建议使用,用var。默认的scope是actionContext(即stackContext),见视频45
49、<s:bean>见视频46、47.自习的看。
50、<s:include>会出现乱码问题,尽量少用。
51、"%{x}"的作用是将x当做ognl表达式来处理,而不是把x当做字符串处理。视频48
52、<s:property>中value的值就是ognl表达式;而<s:inlude>中的value就是String类型的,如果要使用ognl表达式则必须用%{x}将x作为ognl表达式来处理。
53、让提示速度加快的方法:java-》editor-》content assist的anto activation delay的值设置小点。
54、parameters见视频50
55、iterator、map、list见视频51
56、theme见视频52,除了<s:fielderror>需要特殊处理外(修改配置文件或者修改css等等),其他的ui标签加上theme="simple"(默认是xhtml)就行了或者修改 struts.ui.theme=xhtml。(可以查看源代码)
57、设计约定(编码规定)
a)原则:简单就是美
b)库名:项目名
c)表明:_Model名
d)字段:保持和属性名一致(注意和数据库的冲突)
e)用层划分包:com.zhujiaxing.bbs.action
model(bean)
service
dto(vo)
f)Action :XXXAction
g)配置文件:*_*
h)namespace:/ ,/admin(后台登陆)等等
i)配置文件中的package:比如:action,adminAction
如果你是项目的组长,需要写约定文档或者直接给组员一个项目模板,要求他们命名规范根据模板来就行了。
58、
- struts2 学习笔记(未完待续)
- Ajax学习笔记总结(未完待续)
- Oracle学习笔记(未完待续)
- dreamweaver学习笔记(未完待续)
- css学习笔记(未完待续)
- angular2学习笔记(未完待续)
- 进程学习笔记(未完待续)
- sql注入学习笔记(未完待续)
- Struts2优缺点(未完待续)
- javascript学习笔记(未完待续)
- Shell学习笔记...未完待续...
- jQuery 学习笔记(未完待续)
- 51学习笔记<未完待续>
- 深度学习(三十五)对抗网络学习笔记-未完待续
- 机器学习(未完待续)
- (未完待续)Windows PE 文件加壳学习笔记
- amd64软件优化学习笔记(未完待续)
- [Oracle]学习Oracle数据库的简单笔记(未完待续)
- Linux的free用法详解
- arg min的含义
- openfire+spark+jwchat+服务器日志输出 环境搭建(学习笔记)
- 免杀技术学习
- 后端队列系统列表
- struts2 学习笔记(未完待续)
- 关于“Stack around the variable ‘XX’ was corrupted”的解决方案
- codeforces 145C - Lucky Subsequence mark
- LUN详解 iscsi (转载)
- SqlServer 2008 r2 express的自动备份实现
- ubuntu 12.04 开机 Num Lock灯不亮问题
- 需要做的一些知识点
- FloatImageText图文混排
- Cocos2d-x win7 + vs2010 配置图文详解(亲测)