Struts2.0

2024-02-20 07:10
文章标签 struts2.0

本文主要是介绍Struts2.0,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

流程详解:

配置详解:

constant  (常用常量配置)
使用Struts2 框架 ,先要导入Struts2 需要的jar 包 , 通过配置中央控制器 以及web.xml 来实现 
Struts.xml
<struts><package name="login" namespace="/" extends="struts-default"><action name="go" class="com.woniuxy.Struts2.LoginAction"><result name="succ">jsp/success.jsp</result><result name="fails">jsp/fails.jsp</result></action></package>
</struts>   
web.xml 配置<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern>
用户登录
1  处理请求
----> 编写action 
1,继承actionsupport类 -----> 推荐使用
2 , 实现action 接口
3,  普通的类
2  获取用户提交的数据
1 领域对象
2 action 的属性
3 实现modeldriven 接口
3  验证 
成功 
失败

如何在action 中接受用户输入

1  在Struts2.0 中有以下几种方式可以获得用户输入的信息,     采用的都是IOC 方式。 具体如下;
一 :   使用action 类的属性来接受用户输入,
二 ; 使用领域对象接受用户输入
三; 使用modeldriven 的方式接受用户输入 -----> 推荐使用

使用action类的属性接受用户输入

一  : 在Struts2 中 可以直接使用action的属性来接受用户输入的输入, 比如在登录中 就采用这种, 有几个注意方面
1  在action 类或只能怪技工对应的属性及get,set方法
2  在页面表单中将表单元素的name属性 与action中的属性名称一样
二: 在action类中使用POJO 类接收用户输入参数。 (领域对象)
在Struts1中  通过使用actonform 类接受用户输入的数据,为了避免业务逻辑层依赖于Struts框架, 我们需要提供一个对应的领域对象( POJO)  然后 在actionform 和领域对象之间进行数据复制,这使程序中的javabean 对象泛滥, 在Struts2 中直接支持使用领域对象来接收用户数据,
public class LoginAction implements Action{
private User user;
public String execute() throws Exception {
// 业务处理
}
set/get。。
}

 Struts2 访问Servlet API 对象

如何访问request,session, application 等
如果要却得servlet api 中的一些对象,如request ,response或session 等 , 怎么做?
1   非IOC 方式 , 
要获取上述 对象 ,通过使用com.opensymphony.xwork2.ActionContext类
2  , IOC 方式
首先告诉IOC 容器(Container)想取得某个对象的意图,试过实现相应的接口。
与Servlet API 解耦的访问方式, 
非 IOC 访问方式
为了避免与Servlet API 耦合在一起, 方便Action 类做单元测试,Struts2 对HTTPservletrequest,httpsession, 和servletcontext 进行了封装,构造了三个map 对象来替代这三种对象,在Action 中,直接使用HTTPservletrequest,HTTPsession,servletContext 对象的map 对象来保存和读取数据,要获取这三个对象, 可以使用com.opensymphony.xwork2.ActionContext类 
  //1 IOC 的解耦方式获取servlet api
                ActionContext actionContext = ActionContext.getContext();
                //1 获取session
                Map<String,Object>session = actionContext.getSession();
                // 添加数据
                session.put("s1", "这是session");
                //2 获取application
                Map<String, Object>application = actionContext.getApplication();
                //添加数据
                application.put("a1", "这是application");
                // 3 request
                actionContext.put("r1", "这是request");
        //在jsp 页面 通过EL 表达式获取域的内容
                // ${requestScop.r1}  ${sessionScop.s1} ${applicatonScop.a1}
IOC 方式: 
除了利用AcionContext来获取request,session,application对象这种方式外,还可以采用在action类中实现某些特定的接口的方式,让Struts2框架在运行时想Action实例注入request,session,application 对象,与之有关的三个接口和方法如下所示;
与servlet  api耦合的访问方式
非IOC 方式
前面采用MAP 对象来封装Servlet API 。 如果要想在action类中直接使用HTTPservletrequest ,HTTPservletresponse,servletContext对象, 可以使用 org.apache.struts2,servletactionContext 类,该类是ActionContex的子类,在这个类中定义了两个静态方法
IOC 方式: 
除了利用ServletActionContext来获取   HttpServletRequest对象和ServletContext对象这种方式外,Action类还可以实现ServletRequestAware和ServletContextAware接口,由Struts2 框架向Action 实例注入HttpServletRequest和ServletContext对象。    

转载于:https://www.cnblogs.com/thelovelybugfly/p/10859661.html

这篇关于Struts2.0的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/727406

相关文章

myeclipse开发 spring+struts2.0+hibernate

各包作用: action与具体表单提交有关,是直接与前台交互的文件。一般一个功能对应一个actionaction之上是service,service为aciton提供各项基本功能,而action处理具体表单请求。比如service提供验证是否存在该用户函数isexistsuser,而action调用这个函数处理表单的请求。service之上是dao,到时直接对数据库表的操作,一般每个dao对应

Struts2.0常用的一些变量

一。“struts.action.extension”指定需要Struts 2处理的请求后缀 FilterDispatcher是Struts 2框架的核心控制器,它负责拦截由<url-pattern>/*</url-pattern>指定的所有用户请求,当用户请求到达时,该Filter会过滤用户请求。默认情况下,如果用户请求的路径以.action结尾,该请求将被转入Struts 2框架处理,否则该

Struts2.0 乱码问题

<constant name="struts.devMode" value="true" /><constant name="struts.i18n.encoding" value="UTF-8" /><!-- 此处的编码方式与jsp中的编码方式要保持一致 --> 在 struts.xml中按照上述代码设置了编码方式后,基本上不会出现中文乱码问题,但是有个地方需要注意,就是struts2.1.

(二)struts2.0之helloworld

1.在导入包的最小集合    commons-logging-1.0.4.jar    freemarker-2.3.8.jar    ognl-2.6.11.jar    struts2-core-2.0.11.jar    xwork-2.0.4.jar   2.在web.xml中编写过滤器 05. <filter> 06. <f

Struts1.2、Struts1.3和Struts2.0下Tiles的配置

struts和Tiles配置取决于两者的版本,就是所需的配置文件和文件的写法有些不同。   Struts1.2和Tiles1.2: 如果使用MyEclipse自带的Struts1.2,那么就是使用自带的Tiles1.2   1.将struts.jar下META-INF/tlds/struts-tiles.tld文件复制到WebRoot/WEB_INF下,这是tiles语法解析文件;在we

struts2.0.14-doubleselect-bg

http://blog.sina.com.cn/s/blog_6145ed810100ebo6.html

struts2.0.14-doubleselect 用来作级联

官方demo  <s:doubleselect label="doubleselect test1" name="menu" list="{'fruit','other'}" doubleName="dishes" doubleList="top == 'fruit' ? {'apple', 'orange'} : {'monkey', 'chicken'}" />   用来作级联

struts2.0.14-doubleselect 用来作级联 官方demo

官方demo   <s:form name="form0">   <s:doubleselect label="doubleselect test1" name="menu" list="{'fruit','other'}" doubleName="dishes" doubleList="top == 'fruit' ? {'apple', 'orange'} : {'monkey', 'chi

深入struts2.0(七)--ActionInvocation接口以及3DefaultActionInvocation类

1.1.1       ActionInvocation类 ActionInvocation定义为一个接口,主要作用是表现action的执行状态。它拥有拦截器和action的实例。通过反复的执行invoke方法。首先被actionProxy,然后是拦截器,所有拦截器执行完后就是action和result . 图3.3.4 ActionInvocation类的主要方法 1.1.2

深入struts2.0(五)--Dispatcher类

1.1.1       serviceAction方法   在上个Filter方法中我们会看到如下代码: this.execute.executeAction(request, response, mapping);     图3.2.1  Filter方法中跳转到action图 而在ExecuteOperations类中(excute是一个实例)有如下代码: