一, 搭建环境
1, 引入包
直接拖到lib中
build path引入包, 注意添加到deploymentassembly中
2, 添加前端控制器, 中心控制器 web.xml , 一个过滤器
3, 添加struts.xml
<?xmlversion="1.0" encoding="UTF-8" ?>
<!DOCTYPEstruts PUBLIC
"-//Apache Software Foundation//DTDStruts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constantname="struts.enable.DynamicMethodInvocation" value="false"/>
<constantname="struts.devMode" value="true" />
<package name="default"namespace="/" extends="struts-default">
<actionname="userLogin"class="com.chinasofti.action.UserLoginAction"
method="login">
<resultname="success">success.jsp</result>
<resultname="failed">failed.jsp</result>
</action>
</package>
</struts>
4,添加一个Action , 可以是一个普通的java类
http://localhost:8888/day1-hellostruts/userLogin.action
/userLogin.action
/代表命名空间
userLogin.action action名称为userLogin-->
<actionname="userLogin"class="com.chinasofti.action.UserLoginAction"
method="login">
<resultname="success">success.jsp</result>
<resultname="failed">failed.jsp</result>
</action>
二,Action
1, 如何创建
- 普通的JAVA类
- 实现接口Action,重写execute方法
- 继承ActionSupport(现实开发中用这个)
可以使用struts框架提供的功能, 如:验证框架, 国际化。。。
当action配置中没有指定class时, 默认执行ActionSupport中的execute方法, 返回success
2, 作用
控制器: 中心控制器(web.xml中配置的StrutsPrepareAndExecuteFilter), 业务控制器(action)
Action业务控制器作用:
- 控制业务流程,调用真正业务处理层service
- 返回一个结果字符串,由中心控制器协调跳转
- 方法处理参数
3, 如何接收参数
用Action属性 (常用之一)
- 属性名要跟表单元素名称一致
- 提供setter, getter方法
用javabean(最常用的)
- bean一定要有一个无参构建器, struts会自动构建对象
- 里面的属性必须提供 setter, getter方法
- 前台页面表单元素命名使用: entity.属性名 假设BEAN变量名称为entity
- 通过拦截器注入参数的
Action实现ModelDriver接口, 重写getModel() 方法
在方法中,实例化实体类, 提供属性, 不需setter, getter(了解就好)
4, method
一个Action可以有多个业务方法,会在struts.xml配置多个action
可以使用通配符 *
<!-- user_login 调用下面这个action中的login方法 user_register 调用下面这个action中的register方法
通过配置多个不同的result作为不同的方法的处理结果页面
-->
<action name="user_*"class="com.chinasofti.house.controller.UserAction"method="{1}">
<result name="success">houselist.do</result>
<resultname="failed">register.jsp</result>
<resultname="register">login.jsp</result>
</action>
5, 动态方法调用
DMI-- Dynamic Method Invocation
- 只需要配置一个action,里面有多个方法
- 启用动态调用--常量进行配置, 所有常量在struts2-core-xxx-jar 包中的org-apache-struts2 下面的default.properties文件中
- struts.enable.DynamicMethodInvocation = true
- action映射名称!方法名.action 调用: user!login.action user!register.action