




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章Action详本章目在Action Servlet使用注解配置Action的创Action可以是一个单纯的类,默认调用execute()方为了让用户开发的Action类更规范,Struts2提供Action接口,定义了Action类应该实现的规范publicinterfaceActionpublicstaticfinalStringSUCCESS="success";publicstaticfinalStringNONE="none";publicstaticfinalStringERROR="error";publicstaticfinalStringINPUT="input";publicstaticfinalStringLOGIN="login";publicStringexecute()throwsException;}还publicclassActionSupportimplements LocaleProvider,Serializable}Action动态方法调在默认情况下,struts2会调用Action类的有时需要在一个ctio类中处理不同的请求时,可以在一个cion类中 多个方法,通过action> 的hd改属性指定方法也可以在请求地址中指定action要执行的方还可以通过修改trus2的属性来禁用动态方法调用更推荐使用通配符配置cion还可以在找不到Action时配置默认的Action动态方法调在请求地址中指action执行的方publicclassUserActionextendsActionSupportpublicStringlogin(){...}struts<actionname=“user"<formaction=“user!login.action"method="post">username:<inputtype="text“name="username"><br>password:<inputtype="text“<inputtype="submit"Action动态方法调禁用动态方法调perties中的属 able.DynamicMethodInvocation=将其修改为false将禁用动态方法调
value="false"/>Action动态方法调使用通配符配置在配置<action>时,可以在name,class,method中使用通配符这是另外一种形式的动态方法调例如<action<actionname="*user"class="action.UserAction"<action<actionname=“*_*"class="action.{1}Action"Action动态方法调配置默认的如果struts2找不到用户请求的URL时会提示错通过配置<default-action-设置默认的<default-action-refname="default"></default-action-<actionAction的动态结就是指在配置时你不知道要执行哪一个结果,在运行时刻才能确定执行的结果就是在配置结果时使用了表达式,在运行时刻,框架解并计算表达式,根据表达式的值来确定要执行的结publicclassUserActionextendsActionSupportprivateString}<actionname="user"接收用户数开发Web应用程序,首先应会遇到对用户输入数据的接传统的Web应用程序是使用HttpServletRequestgetparameter(Stringname)方法从请求中获取数而Web数据然后绑定到一个aaan对象中Struts2提供了多种方式用于接收使用action属性接收用户输入(Property-Driven属性驱动使用领域对象接收用户输使用ModelDriven(模型驱动接收用户数使用领域对象接收用户输实现用户登录功创建User.java用户登录信创建无参构创建ActionUser类对User对象的set、get方创建JSP页表单元素使用”对象.属性”设置name属packageimportpublicclassUserimplementsSerializable{privateStringusername;privateStringpublicUser(}}publicclassUserActionextendsprivateUserpublicUsergetUser()return}publicvoidsetUser(Useruser)this.user=}publicStringreturn"success";return<%@pagelanguage="java"contentType="text/html;charset=UTF-8"<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""<metahttp-equiv="Content-Type"content="text/html;charset=UTF-<title>Inserttitle<formaction="/TestStruts2/login.action"method="post">username:<inputtype="text"value=""name="user.username"><br>password:<inputtype="text"value=""<inputtype="submit"接收用户数使用ModelDriven(模型驱动实现用户登录功创建User.java用户登录信创建无参构创建Action实现com.opensymphony.xwork2.ModelDriven接User类对象并实例实现getModel()方法,返回User创建JSP页表单元素使用”属性”设置name属packageimportpublicclassUserimplementsSerializable{privateStringusername;privateStringpublicUser(}}publicclassUserActionextendsActionSupportimplementsModelDriven<User>{privateUseruser=newpublicUsergetModel()return}publicStringexecute()if(user.getUsername().equals(user.getPassword())){return"success";}else}
return<%@pagelanguage="java"contentType="text/html;charset=UTF-8"<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""<metahttp-equiv="Content-Type"content="text/html;charset=UTF-<title>Inserttitle<formaction="/TestStruts2/login.action"method="post">username:<inputtype="text"value=""name="username"><br>password:<inputtype="text"value=""<inputtype="submit"在Action Servlet在传统的WEB开发中经常使用HttpSessionHttpServletRequest和Struts2的action完全与Web解 ServletAPI的方式与Servlet解耦的方与Servlet耦合的方在Action Servlet与Servlet解耦的方为了能与ServletAPI之间解struts2对HttpSession、HttpServletRequest和进行了封使用三个Map对象来替代HttpSession、HttpServletRequest在Action中可以直接使用Map对象来保存 数要获得三个Map对象要使com.opensymphony.xwork2.ActionContext也可以使用RequestAware、SessionAwareApplicationAware接publicObject调用get(“request”)来获得封装HttpServletRequest的Map对publicMap获取封装HttpSession的Map对publicMap获取封装ServletContext的Map对publicstaticActionContextpublicStringexecute()ActionContextactionContext=if(user.getUsername().equals(user.getPassword()))Map<String,Object>session(Map<String,Object>)actionContext.getSession();session.put("user",user);Map<String,Object>application=BookBIZbookBIZ=newBookBIZ();application.put("books",bookBIZ.getBooks());return"success";}elseMaprequest=request.put(“errorinfo”,“登录失败在Action Servlet除了利用ctiononext来获取,strus2还提供了三个接口来获取三个ap对象erceptor.ApplicationAware接publicvoidsetApplication(Map<String,Object>erceptor.RequestAware接publicvoidsetRequest(Map<String,Object>erceptor.SessionAware接publicvoidsetSession(Map<String,Object>在Action ServletpublicclassUserActionextendsimplementsRequestAware,SessionAware,ApplicationAwareprivateMap<String,Object>session;privateMap<String,Object>application;privateMap<String,Object>request;publicvoidsetApplication(Map<String,Object>application)this.application=}publicvoidsetRequest(Map<String,Object>request){this.request=request;}publicvoidsetSession(Map<String,Object>session)在Action Servlet与Servlet耦合的方直 ServletAPI将使用你的Action和Servlet环境耦合在一不便于Action的单元测使用org.apache.struts2.ServletActionContext类的静态方使用com.opensymphony.xwork2.ActionContext类的get()方在Action ServletServletActionContext类的静态方publicstaticHttpServletRequestpublicstaticHttpServletResponsepublicstaticServletContextpublicstaticPageContextpublicclassUserActionextendsActionSupportpublicStringexecute()HttpServletRequestrequestHttpSessionsession=request.getSession();ServletContextapplication=}}在Action ServletActionContext类的get()方publicObjectget(Stringorg.apache.struts2.StrutsStaticspublicclassUserActionextendsActionSupportpublicStringexecute()HttpServletRequestrequest=(HttpServletRequest)HttpSessionsession=ServletContextapplication=(ServletContext)}}在Action Servlet除了利用Seletctiononext,strus2还提供了二个接口来直接获得SeletPIerceptor.ServletRequestAware接publicvoidsetServletRequest(HttpServletRequestorg.apache.struts2.util.ServletContextAware接publicvoidsetServletContext(ServletContext在Action ServletpublicclassUserActionextendsActionSupportimplementsServletRequestAware,ServletContextAware{
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会展产品合同范本
- 出口种子销售合同范本
- 转卖音响合同范本
- 劳务外包合同范例
- 中介委托租房电子合同范本
- 凯伦股合同范本
- 养牛合伙合同范本
- 北海吊车出租合同范本
- 公司中途入股合同范本
- 产品服务合同范例
- Unit1RelationshipsLesson2HowDoWeLikeTeachers'Feedback课件高中英语北师大版选择性
- 加油站加油合同范本
- 库存管理规划
- 河南省南阳市2024-2025学年七年级上学期期末模拟英语试题(含答案)
- 煤矿员工安全培训教材一通三防篇
- 表演课程教案完整版
- 2024年新疆区公务员录用考试《行测》试题及答案解析
- 灌篮高手培训课件
- 小学生心理健康讲座5
- 贵州省房屋建筑和市政工程标准监理电子招标文件(2023年版)
- DB14-T 2736-2023 池塘养殖尾水处理规范
评论
0/150
提交评论