一、Struts2引言

  1、Struts2框架的概念

    解决的MVC开发过程中,控制器(Controller)的通用问题。

    a、什么是MVC开发

      MVC开发是一种编程思想,由设计者人为的把一个项目,划分为三个层次:M(Module模型层)V(View视图层)C(Controller控制层)。

    b、javaEE编程体系中MVC编程思想的实现

      (1)V(View视图层)------jsp、html

      (2)C(Controller控制层)------Servlet

      (3)M(Module模型层)------javaBean(Service+DAO+Entity)

        模型是对客观世界的一直模拟。

    c、MVC的好处

      (1)便于多个程序员协同开发,提高开发效率。

      (2)解耦和、利于代码维护。

    d、Servlet作为控制器存在许多问题

      (1)收集数据的代码冗余、需要手工处理中文字符集、手工进行类型转换。

      (2)路径跳转,硬编码在了Servlet中,不利于后续的修改维护。

  2、一个最简单的Struts2程序

    a、环境搭建

      将Straut2的相关jar包导入lib文件夹中,将struts.xml放置在跟src根目录下。

      web.xml中配置struts2的核心过滤器:      

<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>

    b、编码

      implements Action接口,实现execute()方法:

public class FirstAction implements Action{

    public String execute()throws Exception{
        System.out.println("---this is first action---");
        //跳转页面的路径
        return "success";
    }
}

      配置struts.xml

<struts>
    <package name="action1" extentd="struts-default">
        <action name="first" class="com.liquidxu.struts2.FirstAction">
            <result name="success">/admin/index.jsp</result>
        </action>
    </package>
</struts>

      FirstAction类中execute()方法的返回值"success"跟配置文件中的result name是保持一致的,<result>节点中的内容/admin/index.jsp才是真正跳转的路径。将跳转路径从代码中转移到配置文件中,利于代码的维护。

      ps、大家会发现execute()方法中是没有request跟response的,这时我们就要介绍一下Struts2的一个重要的工具类ServletActionContext。该工具类必然是静态的,可以在直接拿来使用:HttpServletRequest reqeust = ServletActionContext.getRequest();HttpServletResponse respones = ServletActionContext.getResponse();当我们拿到request对象的时候,自然可以通过request对象获得session跟ServletContext。

      ps、Sevlet创建:一个Servlet类型只会创建一个实例。

        Action创建:一个Action类型,在每次一请求,都会创建一个Action对象。

浅谈Struts2(一)的更多相关文章

  1. 浅谈struts2之chain

    转自:http://blog.csdn.net/randomnet/article/details/8656759 前一段时间,有关chain的机制着实困绕了许久.尽管网上有许多关于chain的解说, ...

  2. 浅谈Struts2

    学过SSH框架很长一段时间了,一直没有很系统的总结一下,这里先简单谈谈Struts2. 为什么要用Struts2? 这里列举一些Servlet的缺点: 1.每写一个servlet在web.xml中都要 ...

  3. 浅谈 Struts2 面试题收藏

    Struts2面试题 一.工作原理 一个请求在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Fi ...

  4. 浅谈Struts2拦截器的原理与实现

    拦截器与过滤器           拦截器是对调用的Action起作用,它提供了一种机制可以使开发者定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同时也是提供了 ...

  5. [SSH 2] 以网站主页面浅谈Struts2配置

    导读:前面总体的介绍了一下SSH框架,那么作为Struts这一支,具体是怎么配置的呢?本篇博客则主要是以自己做过的实例中的登录一条线,简单介绍一下struts2的配置,如有不妥之处,还请大家多提点提点 ...

  6. 小学生之浅谈Struts2与struts1的运行机制

    Struts1工作原理图: 1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(s ...

  7. 浅谈Struts2(四)

    一.Struts2的拦截器(Intercept) 作用:把多个Action中的共有代码,提取至拦截器,从而减少Action中的冗余代码. 1.Action拦截器 a.编写interceptor类 pu ...

  8. 浅谈Struts2(三)

    一.Struts2收集client的参数 核心思路: <form method="post" action="XXXX"> <input ty ...

  9. 浅谈Struts2(二)

    一.struts2的跳转 1.action跳转JSP a.默认为forward <action name="action1" class="com.liquidxu ...

随机推荐

  1. Adobe Acrobat 9 Pro 简体中文正式版(免激活)

    软件语言:简体中文版本性质:官方正式版(免激活,非破解) Mac & PC [SN]: 1118-4018-6583-4956-2486-7805 修改 Abcpy.ini 可实现免序列号免激 ...

  2. Adobe Acrobat 9 Pro Extended 9.4简体中文完整免激活注册版

    Acrobat9 Pro最近升级比较频繁,如今已经升级到了Acrobat 9 Pro Extended 9.4版.亿品元素上曾经分享过Acrobat Pro Extended简体中文版 9.3.3 优 ...

  3. IE8 多进程问题

    IE8的一个重要特性就是每个Tab(选项卡)在独立的进程中运行,我们称之为LCIE(Loosely-Coupled IE). 所以大家在升级到IE8之后会发现资源管理器里面有两个或者多个iexplor ...

  4. c++ 关于类构造函数的初始化列表

    除了性能问题之外,有些时场合初始化列表是不可或缺的,以下几种情况时必须使用初始化列表 常量成员,因为常量只能初始化不能赋值,所以必须放在初始化列表里面 引用类型,引用必须在定义的时候初始化,并且不能重 ...

  5. jquery插件tab——小试牛刀

    <html> <head> <script type="text/javascript" src="http://ajax.googleap ...

  6. [置顶] 北漂的大三IT男(暂完)

    今天是2013年8月9日,是我待在北京的最后一个晚上,今天我已经正式向公司提出辞职了,虽然公司已经答应从下个月起涨部分工资,但是我还是坚决的离开了,回想当时进公司的想法----------干了一个月后 ...

  7. C++重载运算符的规则

    (1)C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载. 例如,有人觉得BASIC中用“* *”作为幂运算符很方便,也想在C++中将“* *”定义为幂运算符,用“3* *5”表示3 ...

  8. 微软URLRewriter.dll的url重写在.net简单使用

    最近在做一个cms的网站 打算做成伪静态,从博客园上差了很多人的资料,终于实验成功了,原理就不讲了,附上在本地的配置,IIS的配置遇到后在发布. 文章最后附上源码 步骤如下 1.新建网站,添加URLR ...

  9. Android中adb push和adb install的使用区别

    Android中adb push和adb install的使用区别  转载 本篇文章由史迎春(@三俗小女子)投稿.转载请注明原文地址. 在Android实际开发中,经常会使用adb命令,安装应用程序可 ...

  10. AdventureWorks2008 数据库安装

    我使用的操作系统是 win 8.1,由于对早前安装的sql server 2008的兼容性不太好,要安装对应的service pack来解决一下这个问题. 如何使用 SQL Server 在 Wind ...