马士兵struts21笔记.docx
- 文档编号:10423327
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:22
- 大小:23.62KB
马士兵struts21笔记.docx
《马士兵struts21笔记.docx》由会员分享,可在线阅读,更多相关《马士兵struts21笔记.docx(22页珍藏版)》请在冰豆网上搜索。
马士兵struts21笔记
1、02_尚学堂马士兵_Struts2_Struts2_HelloWorld_2.avi
指定Tomcat的目录,指定JDK搭建开发环境(拷贝jar包,复制struts.xml文件此文件不要放在WEB-INF下面,应该放到src下面),在web.xml文件中:
其中
在struts-2.1.8.1-all.zip包中可以找到struts.xml和web.xml
2、04_尚学堂马士兵_Struts2_Struts2_HelloWorld_3.avi
(1)
--
常量的配置-->
--name="struts.devMode"value="true":
当前是开发模式,改动配置文件会自动装载默认是false-->
--命名空间--->action-->相应的处理类或页面-->
/Hello.jsp
反编译源文件,加载struts-2.1.8.1-all.zip下面core.src.java
(2)struts.xml不自动提示的解决办法:
window--perferences-XMLcatalog---add---keyType="URI"key="*.dtd"
3、09_尚学堂马士兵_Struts2_Struts2_HelloWorld_7_2.avi
struts2的执行流程:
当用户在浏览器中敲入要访问的地址的时候,浏览器会将这个请求发送给tomcat然后tomcat判断应该交给那个WebApplication来处理,然后会读取它下面的web.xml配置发现有配置:
因为
4、10_尚学堂马士兵_Struts2_Struts2_Namespace_命名空间.avi
(1)namespace决定了action的访问路径,默认为"",可以接收所有路径的action
namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action,
/xxx/index.action,或者/xxx/yyy/index.action
namespace最好也用模块来进行命名
5、11_尚学堂马士兵_Struts2_Struts2_Action.avi
(1)struts1与struts2的一个重要区别:
在struts1中进行多次访问的时候用到的是同一个Action对象。
而struts2则是每一次访问都会创建一个Action对象,所以struts2不会有线程安全问题的发生
(2)
(3)
(4)实现struts的处理类的时候不要自己随便写类然后定义execute()方法,也不要实现Action类而要从ActionSupport类继承,可以直接使用它为我们定义好的方法.
6、12_尚学堂马士兵_Struts2_Struts2_Path_路径问题.avi
(1)struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
虽然可以用redirect方式解决,但redirect方式并非必要。
解决办法非常简单,统一使用绝对路径。
(在jsp中用request.getContextRoot方式来拿到webapp的路径)
或者使用myeclipse经常用的,指定basePath
(2)request.getContextPath()得到项目的名字,一般用来解决路径问题如果项目为根目录,则得到一个"",即空的字条串。
request.getscheme()返回的协议名称.默认是http
request.getServerName()就是获取你的网站的域名,如果是在本地的话就是localhost
request.getServerPort()获取服务的端口号
7、13_尚学堂马士兵_Struts2_Struts2_ActionMethod_DMI_动态方法调用.avi
Action执行的时候并不一定要执行execute方法
可以在配置文件中配置Action的时候用method=来指定执行哪个方法
也可以在url地址中动态指定(动态方法调用DMI)(推荐)
add">添加用户
前者会产生太多的action,所以不推荐使用
配置文件:
8、14_尚学堂马士兵_Struts2_Struts2_ActionWildcard_通配符配置.avi
主要学习通配符的使用通配符可以将配置量降到最低,不过一定要遵守"约定优于配置"的原则
--更简便的配置法-->
说明:
(1){1}代表name="Student*"后面第一个'*',同理{2}代表第二个'*'
(2).如果action之间有重复配置,struts2会匹配最精确的action。
如果通配符配置之间有重复,则看前后配置顺序
9、15_尚学堂马士兵_Struts2_Struts2_用Action的属性接收参数.avi
在继承ActionSupport的类中定义要接受的参数,参数的名称与Action所传的名称无关在struts2内部调用的是属性的set方法,所以setxxx()的名字一定要与Action后面所传的值是一样的。
10、16_尚学堂马士兵_Struts2_Struts2_用DomainModel接收参数.avi
如果要接受的参数的个数很多,我们可以不用定义属性而是直接定义一个对象例如:
privateUseruser(setget方法)在调用Action传值的时候使用user!
add?
user.name=x&user.age=x的方式进行值得传递。
(最常用的方式)
11、17_尚学堂马士兵_Struts2_Struts2_用ModelDriven接收参数.avi
继承ActionSupport类的处理类必须同时实现ModelDriven
add?
name=bbb进入处理类的时候会调用getModel()方法返回User对象并且把传过来的值set到里面,注意:
此时privateUseruser=newUser()不能只定义,要同时实现这样getModel()才能拿到user对象。
12、18_尚学堂马士兵_Struts2_Struts2_2.1.6版本的中文问题.avi
在配置文件中加入:
在web.xml中:
--
把过滤器的版本改成老版本的即可解决该问题!
13、19_尚学堂马士兵_Struts2_简单数据验证_1.avi
使用addFieldError方法和s:
fieldError标签简单处理数据校验
publicStringadd(){
if(name==null||!
name.equals("admin")){
this.addFieldError("name","nameiserror");
this.addFieldError("name","nameistoolong");
returnERROR;
}
returnSUCCESS;
}
在页面中显示错误信息:
--以固定的css样式取出错误信息,不方便我们进行相应的处理-->
fielderrorfieldName="name"theme="simple"/> --从存储错误信息的Map中拿数据--> propertyvalue="errors.name[1]"/> --显示详细的栈信息--> debug> debug> 14、21_尚学堂马士兵_Struts2_访问Web元素_1.avi 注意: web.xml中关于struts的配置一定要采用2.1的,2.0的会取不到这是一个bug (1)通过ActionContext对象取得Map类型的request,session,applicationHttpServletRequest,HttpSerletSessionServletContetext: publicclassLoginAction1extendsActionSupport{ privateMaprequest; privateMapsession; privateMapapplication; //访问此方法,取得相应的对象但是是Map类型 publicLoginAction1(){ request=(Map)ActionContext.getContext().get("request"); session=ActionContext.getContext().getSession(); application=ActionContext.getContext().getApplication(); } //在Map类型的对象中存入相应的值 publicStringexecute(){ request.put("r1","r1"); session.put("s1","s1"); application.put("a1","a1"); returnSUCCESS; } } //在页面中通过标签取得存入的数据二种方法(通过标签,通过原始方式): propertyvalue="#request.r1"/>|<%=request.getAttribute("r1")%> propertyvalue="#session.s1"/>|<%=session.getAttribute("s1")%> propertyvalue="#application.a1"/>|<%=application.getAttribute("a1")%> propertyvalue="#attr.a1"/> propertyvalue="#attr.s1"/> propertyvalue="#attr.r1"/> debug> debug> 我们存入Map中的数据居然可以在request,等对象中得到,那么在struts内部他是将Map中的数据全部复制到了request,session等对象中的#attr,可以取得所有的属性,但是不推荐使用,为了防止同名的情况,造成无法区别。 (2)通过实现RequestAware,SessionAware,ApplicationAware接口获取(最常用和重要的一种) privateMap privateMap privateMap //DIdependencyinjection //IoCinverseofcontrol publicStringexecute(){ request.put("r1","r1"); session.put("s1","s1"); application.put("a1","a1"); returnSUCCESS; } @Override publicvoidsetRequest(Map this.request=request; } @Override publicvoidsetSession(Map this.session=session; } @Override publicvoidsetApplication(Map this.application=application; } (3)通过ServletActionContext()取得真实的相应的对象 privateHttpServletRequestrequest; privateHttpSessionsession; privateServletContextapplication; publicLoginAction3(){ request=ServletActionContext.getRequest(); session=request.getSession(); application=session.getServletContext(); } publicStringexecute(){ request.setAttribute("r1","r1"); session.setAttribute("s1","s1"); application.setAttribute("a1","a1"); returnSUCCESS; } (4)通过实现ServletRequestAware接口获得相应的对象 privateHttpServletRequestrequest; privateHttpSessionsession; privateServletContextapplication; publicStringexecute(){ request.setAttribute("r1","r1"); session.setAttribute("s1","s1"); application.setAttribute("a1","a1"); returnSUCCESS; } @Override publicvoidsetServletRequest(HttpServletRequestrequest){ this.request=request; this.session=request.getSession(); this.application=session.getServletContext(); } 15、23_尚学堂马士兵_Struts2_模块包含 可以将别的写好的配置文件直接包含到struts得配置文件中,方便多人开发避免不必要的配置文件冲突. login.xml xmlversion="1.0"encoding="UTF-8"? > DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN" "http: //struts.apache.org/dtds/struts-2.0.dtd"> 16、24_尚学堂马士兵_Struts2_默认Action --当配置文件中没有用户要访问的Aciton的时候,会调用 17、27_尚学堂马士兵_Struts2_结果类型_result_type_1 ResultType的最常用的几种配置: (四种配置分别代表了四种不同的跳转方式) --type不写默认的为dispatcher: 用服务器跳转跳转到结果页面--只能跳转到页面,不能跳转到Action--> --客户端跳转的方式跳转到结果页面只能跳转到页面,不能跳转到Action--> --服务器跳转的方式跳转到Action-->
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 士兵 struts21 笔记