SSH学习之Struts2(一)

来源:互联网 发布:redis与数据库 编辑:程序博客网 时间:2024/05/23 02:07

1.strust2框架来历简介

WebWork是由OpenSymbony组织开发的,是致力于组件化和代码重用的J2EE Web框架。(同时也是一个成熟的基于Web的MVC框架)。

MVC:Model是模型 View是视图 Control是控制器,这是一种框架模式。

值得一提的是:web项目的三层架构(和MVC是两个完全不同的架构)

1.表示层:struts2框架就是工作在这个地方,是一款于视图层的MVC三层架构的框架。其实我们在移动开发中,例如Android开发中,也是在表示层工作,我们同样可以采用MVC三层架构来编程开发。

2.业务逻辑层:service层,处理业务逻辑,比如判断用户名是否存在,密码是否正确,权限是否拥有,账号是否被冻结,账号是否异常,用户积分是否达到操作要求等等,多为一些执行某一个操作条件的判断。

3.数据访问层:也就是常说的dao层,专门用于处理与数据库交互的的一层,如常用的增删改查等等。jdbc/hibernate技术就是在这一层使用。

在项目中,这些不同分层的表现形式,其实就是在我们自己建的不同的package中写上各自分层中所使用的Java类。比如在项目中我们建了三个package,三个package中的java类的作用分别为表示层的代码,业务逻辑层的代码,数据访问层代码。

总结:随着WebWork框架的发展,衍生出了struts2框架,因此struts2框架是WebWork的升级而不是一个全新的框架,因此稳定性,性能等方面都有很好的保证,而且也同时吸收了struts1框架和WebWork两者的优点。所以struts2框架也是一个基于Web的MVC框架。

但是值得注意的是:struts2框架并不是struts1框架的延续或者升级,两者的设计理念完全不同。与其说是从struts1继承而来,不如说是集struts1和xwork优点于一身的一款非常优秀的框架。

2.struts2框架引入到web项目中

2.1把struts2相关的jar包引入到项目中

我们可以在Apache官网下载all包,里面不仅有struts2必须有的jar包,还有示例提供给开发人员学习。我们将解压后的all包打开app文件夹,用好压打开(无需解压)struts2-blank.war文件,进入WEB-INF/lib,复制该文件下所有jar包到web项目中即可。

把其中的jar包直接复制到项目下webcontent中的WEB-INF下的lib中

2.2配置struts.xml

把struts2的配置文件直接放到src下,名字必须叫做struts.xml(因为运行时配置文件会被框架自动读取,到了后面用了注解技术可以大大减少xml文件的编写工作量)。需要注意到的是:如果struts.xml文件不能自动提升出标签内容,需要把相应的dtd文件配置上去。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <constant name="struts.enable.DynamicMethodInvocation" value="false" />    <constant name="struts.devMode" value="true" />    <package name ="default" namespace="/" extends="struts-default">         <action name="first*"             class="com.verney.struts2.action.FirstAction"method="{1}">            <result name="success">/WEB-INF/jsp/first.jsp</result>        </action>    </package></struts>    

constant配置的是一些常量标签,这样的常量标签在默认配置default.properties文件中,可以自行设置。”struts.enable.DynamicMethodInvocation”表示的是是否允许动态方法调用,这里false表示的是禁止;”struts.devMode” value=”true”表示的是开发者模式。

一个struts.xml文件中可以配置多个package标签,一个package标签里面可以配置多个action标签,一个action标签里面可以配置多个result。

这里需要注意的是命名空间namespace的问题,namespace属于package的一个标签,唯一标识当前这个package。用来对请求action的路径进行管理。所谓的package包表示的是对请求action路径的配置。这里“/”表示的是上一级。extends=”struts-default”表示当前这个package继承了另外一个名字叫做struts-default的package,这个package在struts2的核心jar包中的struts-default.xml文件中定义的,里面定义了很多默认的配置

first*就是将来在浏览器中输入的这个action名字,如果输入的是first1,则*就表示1,如果输入的时firstlogin,则表示的就是login。但是如果原本需要配置的多个action没有非常明显的规律,那么久不要用这种方式来配置了。

action标签用来配置action的名称和class的来源路径,每当对该名称进行请求的时候会先来struts.xml中来进行查找,找到后再到相应的class路径下的对其方法进行加载,method=”{1}”表示匹配第一个first,传过来的是方法的名字即可。每一个action被访问完之后都会有一个字符串类型的返回值,返回值与result的name对应,决定了跳转的路径。当然两个不同名字的action可以对应的是同一个java类,此时method标签的作用就体现出来了:

<action name="test1" class="类A" method="login"><action name="test2" class="类A" method="register">

这样使用test1和test2两个不同名字的action就是访问到同一个类中的两个方法:login和register方法。但是login方法和register方法必须和execute方法类似的,都是返回的是String类型的字符串。

result标签表示的是跳转的路径,如果action类中excute返回的是”success”(这个参数单词必须拼对,这些参数已经在框架中的default.properties已经定义好),则跳转到/WEB-INF/jsp/first.jsp页面中去。

请求action路径的格式是:命名空间+”/”+action的name+”.action”

这些struts.xml配置文件可以在从官网上下载的all包中的struts2-blank.war中可以找到,平时自己可以保存这些常用而又不容易记住的文件,到了需要用到的时候直接拿来用便可。

2.3在web.xml文件中配置struts2框架的过滤器

因为使用框架大多都要在web.xml文件中进行配置,所以我们在新建web项目的时候都要记得把web.xml文件建出来。配置过滤器的作用是:拦截struts2框架中的action.注意如果不配置这个filter,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>*.action</url-pattern></filter-mapping>

2.4框架中action方法的编写

struts框架中有一种java类叫做action,这种说法就像J2EE项目中有一种java类叫servlet,其实在struts2框架底层还是封装了servlet的相关内容实现出来的,只不过struts2框架除了servlet的功能以外还扩展了很多其他的功能,同是还大大简化了以前在servlet中繁琐的操作。之所以action比servlet功能还要强大的原因是我们在web.xml文件中配置了struts2框架中专门的过滤器,拦截住之后,struts2框架就可以给action添加很多丰富的功能了。

编写的action类最好都放在一个action包中,其中action类的命名最好用Action结尾,规范编写,便于管理。

框架中action方法的编写:

  • 1)方法继承ActionSupport类

  • 2)重写excute方法,类型必须是String类型,名称必须是excute,必须是无参。

    public class FirstAction extends ActionSupport{    private static final long serialVersionUID = 1L;    private String excute() {        System.out.println("excute");        return SUCCESS;        }    }

同时还有5个String类型的静态属性:

public static final String SUCCESS = "success";public static final String NONE = "none";public static final String ERROR = "error";public static final String INPUT = "input";public static final String LOGIN = "login";

新建first.jsp,将项目部署到服务器上,开启服务器,用浏览器访问试试看。

这样struts2就算引入成功了。当然这里提到的只是struts2的一些皮毛而已,这个框架的强大之处还没有体现出来,需要我们慢慢的去学习。其实我们仔细阅读default.properties属性文件便可以学到很多框架的知识。一个框架之所以被很多人认可,因为它做了很多开发过程中繁琐而又不得不做的事情,高度封装的前提下是设计思想的体现,我们学习框架正是学习前人优秀的设计思想,这样就算拿到别的框架去使用的时候也会很容易上手了。

0 0