流程详解:
 

配置详解:

 
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对象。    
 
 

Struts2.0的更多相关文章

  1. 入门struts2.0

    框架是什么? 1.应用程序的半成品. 2.可重用行公共的结构. 3.按一定规则组织的一组组件. model2 其实并不是一种全新的概念,很对人指出model2其实正好是经典的"模型(mode ...

  2. struts2.0整合json

    框架:struts2.0+hibernate2+spring 今天写代码时,需要用到json,我就直接加了两个jar包:json-lib-2.1-jdk15.jar,struts2-json-plug ...

  3. [转]初探Struts2.0

    本文转自:http://blog.csdn.net/kgd1120/article/details/1667301 Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到用广泛的 ...

  4. Struts2.0 去掉action后缀名

    刚刚接触Struts2.0,发现默认请求都会带着后缀名:action 就如下图,url地址中会暴露login.action(请原谅struts拼写错误..) 作为一个URL简洁爱(chu)好(nv)者 ...

  5. (转)struts2.0配置文件、常量配置详解

    一.配置: 在struts2中配置常量的方式有三种: 在struts.xml文件中配置 在web.xml文件中配置 在sturts.propreties文件中配置 1.之所以使用struts.prop ...

  6. struts2.0 struts.xml配置文件详解

    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&quo ...

  7. Struts2.0+Spring3+Hibernate3(SSH~Demo)

    Struts2.0+Spring3+Hibernate3(SSH~Demo) 前言:整理一些集成框架,发现网上都是一些半成品,都是共享一部分出来(确实让人很纠结),这是整理了一份SSH的测试案例,完全 ...

  8. struts2.0中struts.xml配置文件详解

    先来展示一个配置文件 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration ...

  9. struts2.0 s标签_小小鸟_百度空间

    struts2.0 s标签 1. Struts2页面开发中常用标签使用说明 1.1.往action里传值的使用方式: <input name="userName" type= ...

  10. struts2.0简单教程

    Struts2.0简单配置教程: 在Eclipse中配置Struts2 步骤一:首先打开java ee并建立一个动态网站项目,我建立的项目名为TestDemo,如下图: 建立之后可在左侧发现工程,展开 ...

随机推荐

  1. 2019CCPC秦皇岛 E题 Escape(网络流)

    Escape Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Su ...

  2. 2019牛客全国多校第八场A题 All-one Matrices(单调栈)

    题意:让你找最大不可扩展全1子矩阵的数量: 题解:考虑枚举每一行为全1子矩阵的的底,然后从左到右枚举:up[i][j]:表示(i,j)这个位置向上可扩展多少,同时还有记录每个位置(i,j)向左最多可扩 ...

  3. CF 1130A 1130B 1130C1129A1 1129A2 1129B(Round542A B C D1 D2 E)题解

    A : Be Positive 题目地址:https://codeforces.com/problemset/problem/1130/A 题解:让你求是否满足一个d使得数列长为n的a数组的每个数除以 ...

  4. B.Beautiful Numbers

    题意:你被给予了一个序列 p = [p1, p2, ..., pn](1 ~ n的整数),如果存在l, r左右端点(1 <= l <= r <= n),使得[pl, pl+1,... ...

  5. 测底稳定NIOS开发之一:将nios产生的编程文件转换成jic (连载)

    将nios产生的编程文件转换成jic 前言: 基于某种原因,自从开始fpga开发和nios项目开发中,均为正常使用EDS IDE自带的flash programmer 进行成功的下载固化epcs程序. ...

  6. 前端小白要搞懂什么是HTML,看这一篇就够了

    本文是<HTML5与CSS3基础语法自学教程>的第一篇,首发于[前端课湛]微信公众号. 导读:本小节主要讲解 HTML 的基本信息,其中包含 HTML 概念.HTML 发展历程和 HTML ...

  7. C#中关于值类型和引用类型的区别

    小声哔哔 一直以来对于值类型与引用类型之间的区别都不是特别清晰,直到踩了坑.... 正好最新闲暇,便想着梳理梳理这一两年来遇到的奇葩问题和解决方案,顺便就把它给拎出来记一下,免得以后再摔跤 值类型与引 ...

  8. K3cloud、erp系统实时滚动展示未处理数据,监控投诉处理进度

     痛点:企业内部erp人工记录产品投诉销售单,是否跟踪处理完客户投诉,结果不能实时透明,当天还有多少未解决的投诉单,也不能实时查看到,除非手工去系统单据查询,很不方便,跟踪也不顺畅!   解决方案:利 ...

  9. 基于 asm 实现比 spring BeanUtils 性能更好的属性拷贝框架

    Bean-Mapping 日常开发中经常需要将一个对象的属性,赋值到另一个对象中. 常见的工具有很多,但都多少不够简洁,要么不够强大. 我们经常使用的 Spring BeanUtils 性能较好,但是 ...

  10. NodeJS4-1静态资源服务器实战_实现访问获取里面的内容

    .gitignore 匹配模式前 / 代表项目根目录 匹配模式最后加 / 代表是目录 匹配模式前加 ! 代表取反 * 代表任意一个字符 ? 匹配任意一个字符 ** 匹配多级目录 统一代码风格配置可以用 ...