普通用户注册struts2a.pptx

上传人:牧羊曲112 文档编号:6582617 上传时间:2023-11-14 格式:PPTX 页数:38 大小:969.66KB
返回 下载 相关 举报
普通用户注册struts2a.pptx_第1页
第1页 / 共38页
普通用户注册struts2a.pptx_第2页
第2页 / 共38页
普通用户注册struts2a.pptx_第3页
第3页 / 共38页
普通用户注册struts2a.pptx_第4页
第4页 / 共38页
普通用户注册struts2a.pptx_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《普通用户注册struts2a.pptx》由会员分享,可在线阅读,更多相关《普通用户注册struts2a.pptx(38页珍藏版)》请在三一办公上搜索。

1、S2SH轻量级框架技术-普通用户注册,任务内容,任务内容(3),Action简介,Struts2有两个重要的控制器:StrutsPrepareAndExecuteFilter:中央控制器(核心控制器,Struts2框架提供),负责接收所有请求Action:业务逻辑控制器,负责处理单个特定请求创建Action有三种方式:一个普通的类,不需要实现任何接口或继承任何类。实现Action接口继承ActionSupport类,最常用的一种方式,好处在于可以直接使用Struts2封装好的方法,创建Action的方式,一个普通的类,package com.neusoft.action;import com.

2、opensymphony.xwork2.Action;public class HelloAction public String execute()throws Exception System.out.println(HelloAction.);return“success”;,/hello.jsp,创建Action的方式,实现Action接口,package com.neusoft.action;import com.opensymphony.xwork2.Action;public class HelloAction implements Actionpublic String exe

3、cute()throws Exception System.out.println(HelloAction.);return SUCCESS;,/hello.jsp,创建Action的方式,继承ActionSupport类,package com.neusoft.action;import com.opensymphony.xwork2.ActionSupport;public class HelloAction extends ActionSupport public String execute()System.out.println(HelloAction);return SUCCESS

4、;,/hello.jsp,Action的实现,Action的配置,在Struts2框架中每一个Action是一个工作单元。Struts2框架负责将一个请求对应到一个Action上去,每当一个Action类匹配一个请求的时候,这个Action类就会被Struts2框架调用。Struts.xml中的每一个action元素就是一个action映射。action完整的属性如表所示:,Action的配置,Action配置中的各项默认值:如果没有为action指定class,默认是ActionSupport。如果没有为action指定method,默认执行action中的execute()方法。如果没有指

5、定result的name属性,默认值为success。,/hello.jsp,struts.xml的实现,配置文件分模块的实现,Action名称的搜索顺序,1获得请求路径的URI,例如url是:http:/server/struts2/path1/path2/path3/test.action2首先寻找namespace为/path1/path2/path3的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package则转步骤3;3寻找namespace为/path1/path2的package,如果存在这个package,

6、则在这个package中寻找名字为test的action,如果不存在这个package,则转步骤4;4寻找namespace为/path1的package,如果存在这个package,则在这个package中寻找名字为test的action,如果仍然不存在这个package,就去默认的namaspace的package下面去找名字为test的action(默认的命名空间为空字符串),如果还是找不到,页面提示找不到action。,DMI以及通配符,Action执行的时候并不一定要执行execute方法可以在配置文件中配置Action的时候用method属性来指定执行哪个方法如果Action中存在

7、多个方法时,可以在url地址中动态指定(动态方法调用DMI)(推荐)/user/user!add添加用户如果不想使用动态方法调用,我们可以通过常量关闭动态方法调用。前者会产生太多的action配置,所以不推荐使用,DMI以及通配符,使用通配符,将配置量降到最低不过,一定要遵守约定优于配置的原则同时,struts2还支持*_*的配置模式,例如:如果路径中没有通配符,则此Action优先级最高;如果路径中有通配符,不论是何种通配符,按顺序匹配,/1_2.jsp,Action接收请求参数的方式,三种方式:使用Action属性接收参数使用DomainModel接收参数使用ModelDriven接口接收

8、参数,使用Action属性,在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名属性。请求路径:http:/localhost:8080/param/view.action?username=“neusoft”,public class ParamAction extends ActionSupport private String username;public String getUsername()return username;public void setUsername(String username)/struts2通过反射技术调用与请求参/

9、数同名的属性的setter方法来获取请求参数值 this.username=username;public String execute()System.out.println(username:+username);return SUCCESS;,使用DomainModel,请求路径:http:/localhost:8080/param/view.action?user.username=“neusoft”,public class User private String username;public String getUsername()return username;public v

10、oid setUsername(String username)this.username=username;,public class ParamAction extends ActionSupportprivate User user;public User getUser()return user;public void setUser(User user)this.user=user;public String execute()System.out.println(username:+user.getUsername();return SUCCESS;,使用ModelDriven接口

11、,请求路径:http:/localhost:8080/param/view.action?username=“neusoft”,public class ParamAction extends ActionSupport implements ModelDrivenprivate User user=new User();public User getModel()return user;public String execute()System.out.println(username:+user.getUsername();return SUCCESS;,public class User

12、 private String username;public String getUsername()return username;public void setUsername(String username)this.username=username;,Action接受参数的实现,Struts2中访问web元素的四种方式,1.通过ActionContext来访问Map类型的request、session、application对象2.通过实现RequestAware、SessionAware、ApplicationAware接口来访问Map类型的request、session、app

13、lication对象(IoC方式)3.通过ServletActionContext来访问Servlet API类型的HttpServletRequest、HttpSession、ServletContext对象(依赖于Servlet API 方式)4.通过实现ServletRequestAware接口来访问Servlet API类型的HttpServletRequest、HttpSession、ServletContext对象(IoC方式)其中,前两种方式与Servlet API解耦合,后两种方式与Servlet API耦合,推荐使用第二种方式。,通过ActionContext,public

14、class AttributeAction extends ActionSupportprivate Map request;private Map session;private Map application;public AttributeAction()request=(Map)ActionContext.getContext().get(request);session=ActionContext.getContext().getSession();application=ActionContext.getContext().getApplication();public Strin

15、g execute()request.put(req,“req);session.put(ses,“ses);application.put(app,“app);return SUCCESS;,实现RequestAware、SessionAware、ApplicationAware接口,public class AttributeAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAwareprivate Map request;private Map session;private Map

16、application;public void setRequest(Map request)this.request=request;public void setSession(Map session)this.session=session;public void setApplication(Map application)this.application=application;public String execute()request.put(req,“req);session.put(ses,“ses);application.put(app,“app);return SUCC

17、ESS;,通过ServletActionContext,public class AttributeAction extends ActionSupportprivate HttpServletRequest request;private HttpSession session;private ServletContext application;public AttributeAction()request=ServletActionContext.getRequest();session=request.getSession();application=session.getServle

18、tContext();public String execute()request.put(req,“req);session.put(ses,“ses);application.put(app,“app);return SUCCESS;,通过实现ServletRequestAware接口,public class AttributeAction4 extends ActionSupport implements ServletRequestAwareprivate HttpServletRequest request;private HttpSession session;private S

19、ervletContext application;public void setServletRequest(HttpServletRequest request)session=request.getSession();application=session.getServletContext();public String execute()request.setAttribute(req,aaa3);session.setAttribute(ses,bbb3);application.setAttribute(app,ccc3);return SUCCESS;,Action中得到Ser

20、vlet的request实现,默认Action,如果访问一个不存在的action,就会默认的访问标签中name属性定义的action,此处为名称为index的action。,HelloWorld/example,Action中result的各种转发类型,chain:处理action链,跳转到下一个actionredirectAction:重定向到一个actionredirect:重定向到一个URLdispatcher:转发到Jsphttpheader:控制特殊http行为stream:向浏览器发送InputStream对象FreeMarker:跳转到模板文件velocity:处理velocit

21、y模板xslt:处理xml/xlstplaintext:显示原始文件内容,例如:当我们需要原样显示jsp文件源代码 的时候,我们可以使用此类型。,Action中常见的结果类型,/WEB-INF/result/forward.jsp/redirect.jsp re re,Action中的结果类型,如果重定向或者转发的action在别的命名空间下:helloworld/test 在result中还可以使用$属性名表达式访问action中的属性,表达式里的属性名对应action中的属性。如下:,/param.jsp?age=$age,全局result配置,当多个action中都使用到了相同视图,这时

22、我们应该把result定义为全局视图。struts1中提供了全局forward,struts2中也提供了相似功能:/main.jsp,struts.xml的实现,配置文件中的include,对于团队,建议根据功能模块进行划分,每个模块一个struts配置文件,使用导入其他配置文件即可。命名规则一般建议如下:,struts.xml的实现,常量定义,常量可以在struts.xml或struts.properties中配置,建议在struts.xml中配置,两种配置方式如下:在struts.xml文件中配置常量 在struts.properties中配置常量 struts.action.extension=do因为常量可以在下面多个配置文件中进行定义,所以我们需要了解struts2加载常量的搜索顺序:struts-default.xml struts-plugin.xml struts.xml struts.properties web.xml如果在多个文件中配置了同一个常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值.,常见的常量,任务内容(1),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号