struts2为Action配置method属性将Action类中的每一个处理方法都定义成一个逻辑Action方法。
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="my" extends="struts-default" namespace="/manage"> <action name="userLogin" class="org.qiujy.web.struts2.action.LoginAction" method="login"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> <action name="userRegist" class="org.qiujy.web.struts2.action.LoginAction" method="regist"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts>
如上,把LoginAction中的login和regist方法都配置成逻辑Action。要调用login方法,则相应的把index.jsp中表单元素的action设置为"manage/userLogin.action";要调用regist方法,把regist.jsp中表单元素的action设置为"manage/userRegist.action"。
使用通配符映射(wildcard mappings)方式:
在struts.xml文件中配置<action…>元素时,它的name、class、method属性都可支持通配符,这种通配符的方式是另一种形式的动态方法调用。
当我们使用通配符定义Action的name属性时,相当于用一个元素action定义了多个逻辑Action:
<action name="user_*" class="org.qiujy.web.struts2.action.UserAction" method="{1}"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action>
如上,<action name=”user_*”>定义一系列请求URL是user_*.action模式的逻辑Action。同时method属性值为一个表达式{1},表示它的值是name属性值中第一个*的值。例如:用户请求URL为user_login.action时,将调用到UserAction类的login方法;用户请求URL为user_regist.action时,将调用到UserAction类的regist方法。
处理结果
如果在配置文件中写Action执行完的跳转的路径,那么在编写Action Java代码的时候还需要切换至配置文件才能知道action转向那个页面,直接写在Action中不好么?
依照这种并且结合struts1,struts2的零配置,已经在多个项目中应用,也没发现问题
struts1中我的做法是
-
public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { //...... return new ActionForward("/demo/Blog/edit.jsp"); }
struts1中自己另外做了扩展,可以将action的name作为formBean的配置,整个项目的struts-config配置只有下面这么一段话,path举例/admin/User/delete.do
-
<action-mappings> <action path="/*/*/*" type="com.kingsoft.{1}.web.action.{2}Action" name="com.kingsoft.{1}.web.form.{2}Form" scope="request" validate="false" parameter="{3}" attribute="{2}Form"> </action> </action-mappings>
跳转到页面和跳转到action
struts2中自己另外做了扩展,实现forward的做法是
/**进入更新页面*/ public String edit() { blog = (Blog)blogManager.getById(id); return "/demo/Blog/edit.jsp"; }
struts2
-
/**保存更新*/ public String update() { blogManager.update(this.blog); return "!/demo/Blog/list.action"; }
具体跳转例子
struts2
<package name="default" namespace="/demo" extends="custom-default"> <action name="*/*" method="{2}" class="com.kingsoft.demo.action.{1}Action"> <result name="*" type="direct">通过Action直接返回</result> </action> </package>
java action中进行调用
public class StatAction extends BaseStruts2Action implements Preparable,ModelDriven{ protected static final String JSP_dataDay="/WEB-INF/pages/stat/dataDay.jsp"; /** * 日数据查询 * @return */ public String dataDay(){ //.... return JSP_dataDay; }
例子:请求(注意,xml中的namespace必须为“”,否则报错;namespace的含义:命名空间,在浏览器里面输入的东西,http://ip地址:端口号/项目部署名称/namespace/action名称):
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="struts-default.xml"/> <!-- 替换struts.properties中的属性 action name="*/*/*" 中的/ 可用 --> <constant name="struts.enable.SlashesInActionNames" value="true"></constant> <!-- struts2的action必须放在一个指定的包空间下定义 --> <package name="kk" namespace="" extends="struts-default" > <!-- 定义处理请求URL为:功能模块包名/Bean名/方法名 例如:bankinfor/BcmBankInfor/queryBankInfor--> <action name="*/*/*" method="{3}" class="function.business.{1}.action.{2}Action"> <result name="success">/pages/{1}/list.jsp</result> </action> </package> </struts>
相关推荐
第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 1.2.1 什么是框架 7 1.2.2 为什么使用框架 8 1.3 Struts 2框架...
1 首先整合spring和hibernate,这次我们在spring 中配置bean使用注解的方式 ,hibernate实体映射关系也使用注解的方式,配置完毕后用简单方法测试下hibernate是否整合成功。 a 加入支持:添加 spring核心包、...
基于Struts2和Hibernate的简单学生选课系统,只包含管理员,学生,教师,课程内容的简单选课系统,主要使用hibernate的一对多双向关联,多对多双向关联映射实现。
本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...
struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动生成表结构 freemarker 用摸版来表现视图,这个例子就是简单的用法没进行进一不的架设
struts2+Hibernate 示例 目的:构建struts2开发框架 使用 Hibernate作为持久层操作 适合:有一定struts2基础 实现:通过对用户信息的基本操作来给大家做个示范 1、struts2的搭建 2、web.xml文件的简单配置 3、...
struts2+Hibernate+Spring 示例 目的:构建struts2开发框架 使用 Hibernate作为持久层操作 采用Spring容器 适合:有一定struts2基础 对Hibernate有一定的了解 对Spring有一定的知识 实现:通过对用户信息的基本...
NULL 博文链接:https://sunweiherber.iteye.com/blog/622094
Struts:作为基于 MVC 模式的 Web 应用最经典框架,两个项目Struts 和webwork已经集成,成为现在的Struts2。目前的最新版本是2.0.9(2007-7)。 Spring: 是一个轻型的容器,利用它可以使用一个外部 XML 配置文件...
Jakarta Struts编程(中英文双版版) 高效的Model 2编程并不是一项简单的任务,开发人员经常自己发现难于找到很多问题的最佳解决方式。本书是Struts项目的完全指南,引导开发人员理解概念、设计和实现方式。虽然...
3.1 Struts简单介绍 3.2 Struts简单例子 第四章 Hibernate框架 4.1 Hibernian简单介绍 4.2 Hibernate简单例子 第五章 Struts与hibernate结合 5.1 Struts与Hibernate简单结合 5.2 国际化程序和中文编码问题 ...
本资料包是一个基于JSP的内容管理系统,采用了Hibernate3、Struts2和Spring2这三个流行的Java框架进行开发。整个系统的设计遵循了MVC(Model-View-Controller)模式,将数据、界面和控制逻辑分离,使得代码结构清晰...
一个struts入门的简单流程图。 next1: 根据你提交表单的申请JSP服务器容器把HelloWorld.do映射到 next2: JSP服务器容器把的HelloWorld.do指到的path="/HelloWorld"; next3: struts控制器根据name="HelloForm"找中...
Struts映射到Model 2设计模式的完整介绍 详细论述利用JSP使用Struts的知识,包括Struts标记库 Struts异常处理、验证和登录 Struts应用程序的国际化和本地化 完整论述新StrutsTiles模板库 Struts应用程序的打包和发布
Struts映射到Model 2设计模式的完整介绍 , 详细论述利用JSP使用Struts的知识,包括Struts标记库 Struts异常处理、验证和登录 Struts应用程序的国际化和本地化 完整论述新StrutsTiles模板库 ...
书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...
建立一个Java Web项目,提取最少运行Struts2应用的包集合,目标:实现一个简单的用户登录 包括内容: 一、先实现登录页面 二、实现处理页面的Action 三、配置Web.xml 四、配置Action处理结果和资源资源之间的映射关系 ...
为了练手培训,给大家准备的 Open Session In View 的简单例子,纯代码,大家可以参考,其中主要说了六部分内容: 1.通过接口编程 2.通过spring注入dao到 action 3.通过 open session in view filter 支持 延迟加载...