Struts2 - XinxinZhou/JavaEE GitHub Wiki
1.下载Struts2,导入包 2.配置web.xml.
Eclipse 生成、部署Web项目时,会自动将src路径下除了*.java意外的所有文件都复制到Web应用的WEB-INF\classes路径下.
Struts2 开发步骤: 1.web.xml中定义核心Filter来拦截用户请求。 2.如果需要以POST方式提交,则定义包含表单数据的JSP页面。如果仅仅是用GET方式发送请求,则无须经过这一步。 (JSP) 3.定义处理用户请求的Action类 (action.java) 4.配置Action. (struts.xml,通常放在WEB-INF/classes路径) 5.配置result与视图之间的对应关系. (return success. success.jsp.) 6.编写视图资源.(JSP)
Action不与物理视图关联,解耦. action只负责返回处理结果,而结果与什么视图关联,由StrutsPrepareAndExecuteFilter来决定。 好处:如果需要将某个视图名映射到不同的视图资源,无须修改Action代码,只需修改配置文件.
实现Action 对于Struts2, Action才是核心,开发人员自行编写大量的Action类, 然后在struts.xml配置即可。
Q1:Action并未街道用户请求,怎么能处理用户请求? MVC机理: 当Servlet或者Filter接收到用户请求后,通常会对用户请求进行简单的预处理,然后通过反射来创建Action实例,并调用Action的指定方法来处理用户请求。
Q2:当Servlet或Filter拦截用户请求后,它如何知道创建哪个Action实例? 利用配置文件 struts.xml, 配置action对应使用类Action类. 这样MVC框架就知道该创建哪个Action实例了.
Struts2中,Action类不继承任何Struts2基类,或者实现struts2的接口。 所以,Action类只是一个JavaBean(但通常包含一个无参数方法execute()). Action类中一定要包含 与所需变量xxx 对应的 setXXX() 与 getXXX(). 系统会自动调用setXXX().
Struts2 提供了一个ActionContext类, Struts2 Action可以通过该类访问SerlvetAPI. Web通常需要访问的Servlet API就是HttpServletRequest、HttpSession和ServletContext, 这3个接口分别代表JSP内置对象中的request、session和application.
- Map getSession(): 返回一个Map对象,模拟HttpSession实例。