一、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. substr,substring,slice 的区别

    javascript中的三个函数substr,substring,slice都可以用来提取字符串的某一部分(函数名称都是小写,不要写成subStr,subString又或者Substring,记住js ...

  2. IOS开发之xcode 快捷键

    IOS开发也有一年多了,发现Xcode快捷键,还不熟,恶补一下.要不然真影响工作效率,呵呵! 1. 文件 CMD + N: 新文件 CMD + SHIFT + N: 新项目 CMD + O: 打开 C ...

  3. iOS 处理方法中的可变參数

    ## iOS 处理方法中的可变參数 近期写了一个自己定义的对话框的demo,想模仿系统的UIAlertView的实现方式.对处理可变參数的时候,遇到了小问题,于是谷歌了一下.写下了处理问题的方法.记录 ...

  4. Kali linux安装漏洞扫描工具Nessus指南

    引子:Nessus是著名信息安全服务公司tenable推出的一款漏洞扫描与分析软件,号称是"世界上最流行的漏洞扫描程序,全世界超过75,000个组织在使用它".虽然这个扫描程序能够 ...

  5. Cocos2d-x 3.1.1 学习日志6--30分钟了解C++11新特性

    新的keyword auto C++11中引入auto第一种作用是为了自己主动类型推导 auto的自己主动类型推导,用于从初始化表达式中判断出变量的数据类型.通过auto的自己主动类型推导.能够大大简 ...

  6. 获取第下一个兄弟元素 屏蔽浏览器的差异(nextElementsibling)

    //获取element下一个兄弟元素 function getNextElementSibling(element){ //能力检测 判断是否支持nextElementSibling if(eleme ...

  7. HTML系列(八):表格

    一.基本表格: 表格标记<table>,行标记<tr>,单元格标记<td> 基本语法: <table> <tr> <td>单元格 ...

  8. 框架计划随笔 三.EntityFramework在传统事务脚本模式下的使用

    某个朋友问为什么不推首页或者允许评论,我说一直没怎么写博客,也习惯了先随便乱画再开始写文档,担心公开后一些不经意的"呓语“中得出的错误的结论会给别人错误的观点,所以这个系列只是当做熟悉写博客 ...

  9. 转载:JS触发服务器控件的单击事件

    原文地址:http://blog.csdn.net/joyhen/article/details/8485321 <script src="../Js/jquery-1.4.2.min ...

  10. Matlab中K-means聚类算法的使用(K-均值聚类)

    K-means聚类算法采用的是将N*P的矩阵X划分为K个类,使得类内对象之间的距离最大,而类之间的距离最小. 使用方法:Idx=Kmeans(X,K)[Idx,C]=Kmeans(X,K) [Idx, ...