struts2是通过filter来初始化配置的,struts1 是通过servlet 加载配置的
action名称的搜索路径,按包的顺序从里往外搜
1>如果没有为action指定class,默认是ActionSupport。
2>如果没有为action指定method , 默认执行action中的execute()方法 。
3>如果没有为result指定name属性 , 默认为success 。
视图类型
1. 重定向的类型:dispatch(默认值),redirect(客户端跳转),redirectAction,plainText
2 . 在action中的参数可以在result中间配置
<action name="list" class="cn.itcast.action.HelloWorldAction" method="execute">
<result name="success" type="redirect">/employeeAdd.jsp?username=${username}</result>
</action>
(在action必须有getUsername()方法)
与struts 1 相比,灵活性强,struts1 是在action中把参数设置在request中 ,然后在jsp页面上从request中获得
3 . redirectAction:从一个action跳转到另一个action
访问不在同一包中的action
<action name="redirectAction">
<result type="redirectAction">
<param name="actionName">xxx</param>
<param name="namespace">/control/department/xdsfdsfds/435435</param>
</result>
</action>
4 . plainText:显示原始文件
<action name="plainText">
<result type="plainText">
<param name="location">/index.jsp</param>
<param name="charSet">UTF-8</param><!-- 指定读取文件的编码 -->
</result>
</action>
5 . 定义全局视图
我们知道在包中可以定义<global-results> ,但只有包中的action共享这个视图,其他包无法访问
如何定义全局视图?
定义一个包
<package name="base" extends="struts-default">
<global-results>
<result name="message">/WEB-INF/page/message.jsp</result>
</global-results>
</package>
然后让其他的包都继承自这个包
<package name="itcast" namespace="/control/employee" extends="base">
</package>
这样就所有的包都能共享这个视图
6 . 在action中传递中文要转码,在jsp中要解码(只针对客户端的get方式跳转)
action中转码:
this.username = URLEncoder.encode("传智播客", "UTF-8");
jsp中解码:
<%= URLDecoder.decode(new String(request.getParameter("username").getBytes("ISO8859-1"),"UTF-8"),"UTF-8") %>
7 . 在result中如何传递多个参数
<result name="success" type="redirect">/employeeAdd.jsp?username=${username}&id=${id}</result>
&要转码(&)
分享到:
相关推荐
在Struts2中,Action类扮演了控制器的角色,它接收请求,执行相关逻辑,并返回一个表示结果的字符串,这个字符串被用来决定显示哪个视图。 **Struts2框架的执行流程**: 1. 用户发送HTTP请求到服务器。 2. `web.xml...
在Struts2中,配置文件`struts.xml`扮演着核心角色,它定义了动作(Action)、包(Package)和结果(Result)等关键组件的行为。为了方便地解析和处理这些配置,开发者常常会创建自定义的包装类(Wrapper Class),...
这里`userService`是`LoginAction`类的一个属性,通过Spring的依赖注入(DI)机制,Spring会自动为`LoginAction`的`userService`属性设置值,无需在Action的构造函数或初始化方法中手动设置。 6. **数据访问层的...
类型转换则是指Struts2能够自动将请求参数的字符串值转换为Action属性所需的类型,如将`age`的字符串值转换为整型。 为了调试和理解这个过程,可以开启Struts2的日志,查看拦截器的执行顺序和参数绑定情况。此外,...
在hello.jsp中,可以使用Struts2的OGNL表达式来获取Action中的属性值。 6. **运行和测试**: 在MyEclipse中配置好Tomcat服务器,然后右键点击项目选择“Run As” -> "Run on Server"。如果配置正确,访问`...
在Struts2中,验证主要通过在Action类的关联配置文件validation.xml中定义规则来实现。该文件通常与Action类位于同一目录下,文件名格式为`<ActionClassName>-validation.xml`,其中`<ActionClassName>`是对应Action...
Struts2是一个用于开发Java ...对于Struts2 Action的配置,首先需要在struts.xml文件中配置Action。这个配置包括定义Action的名称、所关联的类以及返回结果(result)的配置。在struts.xml中的配置示例如下: ```xml ...
若需要实现自定义的配置管理器,则需创建一个实现了`Configuration`接口的类,并在类中实现Struts 2配置文件的加载逻辑。 #### struts.locale 此属性指定了Web应用的默认Locale设置,用于确定应用的语言环境和区域...
在Struts2中,这通过资源包(Properties文件)实现,通常命名为`messages.properties`,`messages_en.properties`,`messages_zh_CN.properties`等,分别对应默认语言和不同语言版本。 - 使用`<s:text>`标签来显示...
3. **拦截器(Interceptor)**:拦截器是Struts2中的一个重要概念,它可以在Action执行前后插入额外的功能,如日志记录、权限验证、事务管理等。用户可以通过自定义拦截器来扩展框架功能。 4. **OGNL(Object-Graph...
- 在Freemarker模板文件中,可以使用Struts2标签库,如`s:property`来显示Action中的属性值。例如,如果LoginAction中有username属性,可以这样写:`<s:property value="username" />`。 7. **运行和调试**: - ...
在这个整合过程中,Struts2作为前端控制器,负责处理用户请求和视图展示;iBatis作为数据访问层,处理SQL查询与数据库交互;而Spring则作为应用上下文,管理对象的生命周期和依赖注入,提供事务控制等高级服务。 ...
接下来,我们来谈谈**OGNL**,它是Struts2中的表达式语言,用于访问和操作对象图。OGNL可以方便地在视图层和模型层之间传递数据。例如,你可以使用OGNL在JSP页面中直接访问Action类的属性,或者在Action类中设置请求...
例如,我们可以使用`s:property`标签来显示Action中的属性值,如`<s:property value="message"/>`,这里的message是Test2Action类中的一个属性。 此外,MyEclipse提供了丰富的代码生成和调试工具,使得开发者能够更...
5. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为表达式语言,用于在Action与视图之间传递数据。例如,在JSP中,可以通过`<s:property value="someProperty"/>`来显示Action中相应属性的值。 ...
总之,`Struct-config.xml`配置文件是Struts框架中不可或缺的部分,它定义了应用的路由规则、ActionForm Bean的使用、Action的处理逻辑以及异常处理和视图转发策略。正确理解和配置这个文件是开发Struts应用的基础。
在DTD(文档类型定义)中,可以看到struts.xml支持的元素,如`package`、`include`、`bean`和`constant`等,这些元素用于组织和配置Struts2的应用结构。 2. **包配置(Package)** - `package`元素是组织Action和...
例如,如果客户端发送了一个名为`input`的参数,Struts2会自动将其值赋给Action中的`input`属性。在Action的execute方法中,你可以访问这些属性来执行业务逻辑。 至于拦截器,Struts2提供了一种强大的机制,可以在...
在Struts2中,可以使用ModelDriven或ActionSupport的模型驱动方式将数据绑定到值栈,再由JSP页面遍历并显示。 4. **MySQL数据库**:作为关系型数据库,MySQL提供了高效的存储和检索数据的能力。在Hibernate中,需要...