struts2框架学习一

1.简介

Struts2就是一基于MVC模式的开发l框架,对servlet技术的封装!!!!
回顾MVC模式:

  1. M: Model 模型。使用javabean技术,对业务数据的封装;
  2. V: View 视图。 使用jsp技术,对业务数据的显示;
  3. C:Control 控制器。使用servlet技术
  4. 控制器的作用:
    • 1)接收请求,获取用户的参数;
    • 2)调用业务逻辑处理方法;
    • 3)获取结果,导航视图,把结果显示视图中。
案例:用户登录和注册功能(用户模块)。使用MVC模式进行开发。
            设计: 
                dao层:
                    UserDao类: 
                       queryUser(User user); //查询登录用户
                       addUser(User user);//添加用户方法
                service层: 
                    UserService类:
                        login(User user);//登录业务方法
                        register(User user);// 注册业务方法
                web层:
                     一个功能对应一个Servlet类

                    登录功能: LoginServlet类  :    /login访问
                            处理登录请求
                            跳转到视图(jsp)
                            如果是登录成功
                                    跳转到主页
                            否则,不成功
                                    跳转到失败页面
                    注册功能: RegisterServet类:    /register访问
                            处理注册请求
                            跳转到视图(jsp)
                            注册成功,
                                    跳转到登录页面

关注: 能不能优化web层的MVC的代码呢???
现状:一个功能对应一个Servlet处理类,这样的话项目管理的servlet就会很多!!!管理web.xml文件很麻烦!!更多的servlet对象会消耗更多的服务器内存。(单例)
目标: 一个项目只对应一个Servlet处理类。

2.Struts2的使用

1.导入strust2的支持jar包;
这里写图片描述
commons-beautils [beanutils工具包]
commons-filupload.ajr [文件上传]
commons-io.jar
commons-lang [struts2对java.lang.*类的支持]
freemarker.jar [视图显示技术]
javassit [struts2对字节码运算的支持]
ognl.jar [struts2对ognl表达式的支持]
struts2-core.jar [ struts2的核心包 ]
xwork-core.jar [webwork框架的支持,struts2的前身就是webwork(对webwork的封装)]

2.配置启动的全局的过滤器(Filter),如下;

    <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>
    </filter-mapping>

3.编写Action类,业务方法方法;

public class LoginAction implements Action{
    //默认方法
    public String execute() throws Exception {
        System.out.println("执行了LoginAction的execute方法");
        return "success";
    }

}

4.在src目录下,新建一个struts.xml,配置Action对象;

<struts>
        <package name="xxx" extends="struts-default">

            <!-- 配置Action http://localhost:8080/day28_struts/login.action-->
            <action name="login" class="gz.itcast.action.LoginAction">
                <result name="success" type="redirect">/index.jsp</result>
            </action>
        </package>
    </struts>

5.访问Action的业务方法:

http://localhost:8080/struts/login.action   
2.2 struts2框架的作用

 strurs2是基于MVC开发模型的web层框架。
 struts1也是MVC开发模式的框架。struts2并不是struts1的升级版。
 struts2是基于webwork的升级版。struts2=webwork+sturts1
这里写图片描述
struts2的具体功能:
 请求数据封装
 简化国际化
 简化文件上传
 后台数据校验
 ……

2.3 struts2框架的执行过程

项目启动:
 1:创建核心过滤器StrutsPrepareAndExecuteFilter对象
 2:执行核心过滤器的init方法
  读取了依次以下的配置:
   struts-default.xml [struts2框架的默认配置文件(不需要自定修改)]
   struts-plugin.xml [struts2的插件配置文件]
   struts.xml [我们写的业务配置文件(包含配置的Action)]
访问资源:
 3: 在内存中查询对应的Action配置,得到class内容,创建Action对象。
 4:读取Action配置的method内容,执行Action对象对应的方法。

2.4 struts-default.xml文件的详解

1.声明struts2框架运行过程中使用到的一些对象

<bean class="com.opensymphony.xwork2.ObjectFactory" name="xwork" />

 2.默认包,包名叫struts-default(注意:我们自己写的package必须继承这个默认包,只有继承了这个默认包才可以使用该默认包下的功能)

<package name="struts-default" abstract="true">

  2.1:跳转类型:
       常用的跳转类型:
          redirect: 重定向到页面
          dispatcher: 转发到页面
          redirectAction: 重定向到Action
          chain: 转发到Action

<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>

  2.2:声明拦截器(Interceptor)
       struts2默认的拦截器(32个): 完成strutrs2的核心功能。(请求封装,文件上传,国际化…)
   拦截器(Intercptor) vs 过滤器(Filter)
    过滤器: 可以过滤任何类型的请求(html、servlet、jsp)和响应。加入通用的代码逻辑。
    拦截器: 是sturts2的特有功能。只能过滤Action!!在执行Action的时候加入通用的代码。
  2.3:声明拦截器栈 (interceptor-stack name=”basicStack”>)
     默认拦截器:

<interceptor-stack name="defaultStack">    (18个拦截器)

  2.4:默认包当前使用的拦截器:

<default-interceptor-ref name="defaultStack"/>

注意:
我们写的包(package)就是继承struts-default默认包的,那么就继承了默认的18个拦截器

  2.5:当前默认包下的默认Action

<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
2.5 struts.xml文件详解

  该文件是开发者自行配置的业务配置文件。(关键是Action的配置)

  1:包(package),用于管理Action,一般可以按模块划分包!!

 package:代表一个包。管理action配置。在用一个包下面不能有同名的action;
 name:包名.在一个项目中不能出现同名的包;
 extends:继承。类似于类的继承。如果一个包继承另一个包,那么就会把父包的功能继承下来,我们开发的包就必须继承struts-default包;
 namespace:  名称空间。区分不同的包的访问路径。默认值  “/”
 abstract: 表示当前包是否抽象。如果当前包是抽象包,那么不能含有action抽象包中一般用来定义拦截器,公共视图,不做具体的业务。

  2:Action和result的配置

action配置:
    name:  action的名称。用于访问该Action的路径 
    class:  Action业务对象的类名。一定是全名(包名+类名),这里struts2是用反射构造Action对象的
    method: 执行的业务方法。不写默认值 execute
    result配置:
            name: 视图的标记。在一个Action中名称不要重复!
            type: 跳转的类型。
                redirect: 重定向
                dispatcher: 转发(默认值)
                redirectAction: 重定向到Action
                chain:  转发到Action。可以在不同Action中通过request共享数据 
                stream: 用在下载文件的时候。
            文本内容: 跳转到的页面或者Action    

  3:可以通过划分不同的xml文件来管理package

 <!-- 包含读取其他xml文件 注意: 声明的顺序就是读取的顺序!!!!-->
    <include file="config/struts-book.xml"></include>
    <include file="config/struts-user.xml"></include>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值