尚学堂笔记Struts.docx
《尚学堂笔记Struts.docx》由会员分享,可在线阅读,更多相关《尚学堂笔记Struts.docx(11页珍藏版)》请在冰点文库上搜索。
![尚学堂笔记Struts.docx](https://file1.bingdoc.com/fileroot1/2023-5/20/afdb7df6-81ef-454a-a7e0-32d4683c3150/afdb7df6-81ef-454a-a7e0-32d4683c31501.gif)
尚学堂笔记Struts
复制eclipseweb项目时记得修改property-web-webContentRoot
引入项目:
import-General-ExistingProjectsintoworkspace,
1、记得选择copyintoworkspace
2、有可能要修重新引入JRE包:
buildpath->ConfigureBuildPath->Libraries->AddLibrary->JRESystem
Library
XML的标签提示
解压缩struts2core.jar包,找到struts2.dtd,
doc的查看
property->xml-catalog->Javadoc
source的查看
开发模式:
修改MyEclipse默认编码:
MyEclipseEnterpriseworkspace->FilesandEditors->JSP->Encoding
Struts2工作原理
Action
三种写法:
1、普通类,包含一个execute()方法
publicStringexecute(){
Return"success";
}
2、实现com.opensymphony.xwork2.Action接口
3、继承com.opensymphony.xwork2.ActionSupport类(用这种)
【数据校验】
ActionSupport的validate()方法(先执行validate方法再执行execute方法)
【开发模式】如果开启开发模式,那么对struts.xml的更改不必重启服务器就能更新
【】struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
虽然可以用redirect方式解决,但redirect方式并非必要。
解决办法非常简单,统一使用绝对路径。
(在JSP中用request.getContextRoot方式来拿到webapp的路径)
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"
+request.getServerPort()+path+"/";
%>
或者使用myeclipse经常用的,指定basePath
">
【】若result标签中不明确指明name属性,则默认为“success”
【】action类中不一定要有execute()方法,也可以指定要执行的方法
1、Method属性
可在action标签中的method属性中指明,缺点是每一个action标签只能指定一个方法
2、DMI
在URL中的action路径中指明要执行的方法(在URL中添加“!
methodName”),推荐,因为只需要在struts.xml中声明一个action标签就OK了
Struts.xml
UserAction.java
【Action的路径可以是packageName/actionName.action(.action可以省略)】
【通配符】
1、*代表匹配所有;
2、{1}代表第一个*号所表示的内容,如此类推;
例如“*_*”可以匹配“Teacher_add”,那么{1}代表“Teacher”,“{2}”代表“add”;
Struts.xml配置
Action类命名规范
JSP命名规范
【传递参数到Action类】
在Action类中声明成员变量,变量名与欲接收的参数名一致,再为成员变量添加getter和setter
【DomainModel】
【ModelDriven接口】
1、Action类中有一个DTO属性(必须new)
2、Action类实现ModelDriven接口(泛型)
3、覆盖其getModel方法
【中文问题】
有中文的话尽量不要用Get方式传值
【struts2标签】
<%@tablibprefix="s"uri="/struts-tags"%>
debug>
debug>
propertyvalue=""/>
【容器方式访问webelement】
1、Action类中声明Map变量
2、实例化成员变量
3、添加属性
4、在JSP页面中取得属性
【IOC方式访问webelement】
1、实现SessionAware接口
2、声明Map变量
3、覆盖接口方法
4、在JSP页面中取得属性
【包含Struts配置文件】
【defaultaction】
当输入当前的package时,默认运行这个action
此标签与action标签同级
【resulttype】
【globalresult】
1、同一package下的所有action都可共用的result(与action标签同一级)
2一个package上的action引用另一个package上的result,需配置package标签下的extends属性
【${r}】动态为struts配置文件赋值
【#】
一次request只有一个值栈(valuestack)
【带参数的结果集】
redirect与dispatcher的区别
Dispatcher为服务器间跳转,只有一次request,因此useraction与xxAction共享一个值栈。
取值:
Redirect为客户端间跳转,产生两次request跳转,因此两个action并不共享值栈。
取值:
【result总结】
【OGNL】
【标签库】
【property】
【set】\
【bean】
1、Value属性默认为OGNL,所以如果要设置为String类型的时候,在加上单引号''。