




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
struts2的关于method="{1}”意思详解<actionname="Login_*"method="{1}"class=”mailreader2.Login">中Login_*带*是什么意思?method="{1}"带{}这个是什么意思?name="Login_*"代表这个action处理所有以Login_开头的请求method="{1}"根据前面请求Login_methodname,调用action中的以methodname命名的方法class="mailreader2.Login"action的类名称如jsp文件中请求Login_validateUser的action名称,根据上面配置,调用 action类mailreader2.Login类中方法validateUser()又如:对于Login_update请求,将会调用mailreader2.Login的update()方法。它的用法同webwork中的!符号的作用,相当于是一个通配符。+++++++++++++++++++++++++++++++++++++++++++++++++++++++Struts2学习笔记4--ActionMethod--接收参数文章分类:Java编程struts2中的路径问题注意:在jsp中”/”表示tomcat服务器的根目录,在struts.xml配置文件中”/”表示webapp的根路径,即MyEclipseweb项目中的WebRoot路径。总结:struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。虽然可以用redirect方式解决,但redirect方式并非必要。解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)或者使用myeclipse经常用的,指定basePath。ActionMethod配置:<packagename="user"extends="struts-default"namespace="/user"><actionname="userAdd"class="com.bjsxt.struts2.user.action.UserAction”method="add"><result>/user_add_success.jsp</result></action><actionname="user"class="com.bjsxt.struts2.user.action.UserAction"><result>/user_add_success.jsp</result></action></package>总结:Action执行的时候并不一定要执行execute方法1、 可以在配置文件中配置Action的时候用method=来指定执行哪个方法2、 也可以在url地址中动态指定(动态方法调用DMI)(推荐)<ahref="<%=context%>/user/userAdd">^添加用户</a><br/><ahref="<%=context%>/user/user!add">^添加用户</a><br/>前者会产生太多的action,所以不推荐使用。(注:<%Stringcontext=request.getContextPath();%>)ActionWildcard(Action通配符)配置:<packagename="actions"extends="struts-default"namespace="/actions"><actionname="Student*"class="com.bjsxt.struts2.action.StudentAction”method="{1}"><result>/Student{1}_success.jsp</result></action><actionname="*_*"class="com.bjsxt.struts2.action.{1}Action"method="{2}"><result>/{1}_{2}_success.jsp</result><!--{0}_success.jsp--></action></package>{1}、{2}表示第一第二个占位符*为通配符通过actionname的通配匹配,获得占位符,可以使用占位符放在result和method、class中替代匹配的字符。总结:使用通配符,将配置量降到最低。<ahref="<%=context%>/actions/Studentadd">^添加学生</a><ahref="<%=context%>/actions/Studentdelete">删除学生</a>不过,一定要遵守”约定优于配置”的原则。<ahref="<%=context%>/actions/Teacher_add">^添加老师</a><ahref="<%=context%>/actions/Teacher_delete">删除老师</a><ahref="<%=context%>/actions/Course_add">^添加课程</a><ahref="<%=context%>/actions/Course_delete">删除课程</a>接收参数值1、使用action属性接收参数只需在action加入getter/setter方法,如参数name=a,接受到参数必须有getName/setName方法。链接:<ahref="user/user!add?name=a&age=8”>publicclassUserActionextendsActionSupport(privateStringname;privateintage;publicStringadd()(System.out.println("name="+name);System.out.println("age="+age);returnSUCCESS;}publicStringgetName()(returnname;}publicvoidsetName(Stringname)(=name;publicintgetAge()(returnage;}publicvoidsetAge(intage)(this.age=age;}}2、使用DomainModel接收参数将之前的属性放入到POJO,并设置属性的setter/getter方法链接:使用DomainModel接收参数<2href="user/user!add?=a&user.age=8”>添加用户<^>publicclassUserActionextendsActionSupport(privateUseruser;//privateUserDTOuserDTO;publicStringadd()(System.out.println("name="+user.getName());System.out.println("age="+user.getAge());returnSUCCESS;}publicUsergetUser()(returnuser;}publicvoidsetUser(Useruser)(this.user=user;}}publicclassUser(privateStringname;privateintage;publicStringgetName()(returnname;}publicvoidsetName(Stringname)(=name;publicintgetAge()(returnage;}publicvoidsetAge(intage)(this.age=age;}}3、使用ModelDriven接收参数Action实现ModelDriven接口,实现getModel()方法。这样user需要自己new出来,getModel返回user。链接:使用ModelDriven接收参数<2href="user/user!add?name=a&age=8”>添加用户</a>publicclassUserActionextendsActionSupportimplementsModelDriven<User>(privateUseruser=newUser();publicStringadd()(System.out.println("name="+user.getName());System.out.println("age="+user.getAge());returnSUCCESS;}©OverridepublicUsergetModel()(returnuser;}}字符编码配置:<constantname="struts.i18n.encoding"value="GBK”/><!--internationalization-->在struts2.1.6中不起作用,属于bug,在struts2.1.7中修改。解决方案:修改web.xml中:<filter><filter-name>struts2</filter-name><!--struts2.1中使用filter-->v!--vfilter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterv/filter-class>--><!--struts2.0中使用的filter--><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter>Struts2一个Action内包含多个请求处理方法的处理(三种方式)Struts!提供了DispatchAction,从而允许一个Action内包含多个请求处理方法。Struts2也提供了类似的功能。处理方式主要有以下三种方式:动态方法调用:DMI:DynamicMethodInvocation动态方法调用。动态方法调用是指:表单元素的action不直接等于某个Action的名字,而是以如下形式来指定对应的动作名:<formmethod="post"action="userOpt!login.action">则用户的请求将提交到名为”userOpt”的Action实例,Action实例将调用名为”login”方法来处理请求。同时login方法的签名也是跟execute。一样,即为publicStringlogin()throwsExceptiono注意:要使用动态方法调用,必须设置Struts2允许动态方法调用,通过设置struts.enable.DynamicMethodInvocation常量来完成,该常量属性的默认值是true。示例:修改用户登录验证示例,多增加一个注册用户功能。1.修改Action类:packageorg.qiujy.web.struts2.action;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionSupport;/***@authorqiujy*@version1.0*/publicclassLoginActionextendsActionSupport(privateStringuserName;privateStringpassword;privateStringmsg;//结果信息属性/***@returnthemsg*/publicStringgetMsg()(returnmsg;}/***@parammsgthemsgtoset*/publicvoidsetMsg(Stringmsg)(this.msg=msg;/***@returntheuserName*/publicStringgetUserName()(returnuserName;}/***@paramuserNametheuserNametoset*/publicvoidsetUserName(StringuserName)(this.userName=userName;}/***@returnthepassword*/publicStringgetPassword()(returnpassword;}/***@parampasswordthepasswordtoset*/publicvoidsetPassword(Stringpassword)(this.password=password;}/***处理用户请求的login()方法*@return结果导航字符串*@throwsException*/publicStringlogin()throwsException(if("test”.equals(this.userName)&&"test".equals(this.password))(msg="登录成功,欢迎"+this.userName;〃获取ActionContext实例,通过它来访问ServletAPIActionContextcontext=ActionContext.getContext();〃看session中是否已经存放了用户名,如果存放了:说明已经登录了;〃否则说明是第一次登录成功if(null!=context.getSession().get("uName")){msg=this.userName+":你已经登录过了!!!";}else{context.getSession().put("uName",this.userName);}returnthis.SUCCESS;}else{msg=”登录失败,用户名或密码错”;returnthis.ERROR;}}publicStringregist()throwsException(//将用户名,密码添加到数据库中//...msg="注册成功。”;returnthis.SUCCESS;}}2.struts.xml文件:没有什么变化,跟以前一样配置<!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""http://struts.apache.Org/dtds/struts-2.0.dtd"><struts><packagename="my"extends="struts-default"namespace="/manage"><!--定义处理请求URL为login.action的Action--><actionname="userOpt"class="org.qiujy.web.struts2.action.LoginAction"><!--定义处理结果字符串和资源之间的映射关系--><resultname="success">/success.jsp</result><resultname="error">/error.jsp</result></action></package></struts>3,页面:index.jsp<%@pagelanguage="java"pageEncoding="UTF-8"%><html><head>vtitle>用户登录页面</title></head><body>vh2>用户入口v/h2><hr><formaction="manage/userOpt!login.action"method="post"><tableborder="1"><tr>vtd>用户名:</td><tdxinputtype="text"name="userName'7x/td></tr><tr>vtd>密码:</td><tdxinputtype="password"name="password'7x/td></tr><tr><tdcolspan="2"><inputtype="submit"value="确定"/></td></tr></table></form></body></html>regist.jsp<%@pagelanguage="java"pageEncoding="UTF-8"%><html><head>vtitle>用户注册页面v/title></head><body>vh2>用户注册v/h2><hr><formaction="manage/userOpt!regist.action"method="post"><tableborder="l"><tr><td>用户名:</td><td><inputtype="text"name="userName”/></td></tr><tr><td>密码:</td><td><inputtype="password"name="password”/></td></tr><tr><tdcolspan="2”><inputtype="submit"value="注册"/></td></tr></table></form></body></html>1.2,为Action配置method属性:将Action类中的每一个处理方法都定义成一个逻辑Action方法。<!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""/dtds/struts-2.0.dtd"><struts><packagename="my"extends="struts-default"namespace="/manage"><actionname="userLogin"class="org.qiujy.web.struts2.action.LoginAction”method="login"><resultname="success">/success.jsp</result><resultname="error">/error.jsp</result></action><actionname="userRegist"class="org.qiujy.web
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于成果导向2024年园艺师考试的创新思维试题及答案
- 收纳的艺术与科学试题及答案
- 2024年福建事业单位考试职位选择试题及答案
- 2024农业职经理人考试的成功因素研究试题及答案
- 加强2024年农艺师考试的系统化学习方法 重点试题及答案
- 珠宝鉴定行业发展:2024年考试试题及答案
- 职业属性与福建事业单位考试试题及答案
- 精准定位二级建造师考点试题及答案
- 2024年高校辅导员招聘考试的基本政策及试题及答案
- 聚焦复习内容 税务师考试试题及答案
- GB/T 44333-2024绿色产品评价耐火材料
- 北京市智慧工地评价标准
- 产业园区开发全流程实操解析
- 2024版滴灌购销合同滴灌合同
- 《纸质文物修复与保护》课件-30古籍的版式
- 计划岗位工作规划
- 《API618标准学习》课件
- 清明节的中医养生和保健方法
- 自然常数e的意义与计算
- 成人肥胖食养指南2024年版-国家卫健委-202403
- 新生儿头部护理课件
评论
0/150
提交评论