Struts2(一)——基本使用

Struts2 简介

首先明确,Struts2 是一个基于 MVC 设计模式的 WEB 层框架。它本质上相当于一个servlet,在 MVC 设计模式中,Struts2 作为控制器(Controller)来建立模型与视图的数据交互。

Struts2是 Struts1 的下一代产品。是在 struts1 和 WebWork 的技术基础上进行了合并的以 WebWork 为核心全新的框架。采用拦截器的机制来处理用户的请求。

常见 WEB 层框架:Struts2, Struts1, Webwork, SpringMVC。WEB 层框架的特点是基于前端控制器模型来设计。

快速入门

下载strusts框架

https://struts.apache.org/

目录结构

  • apps: Struts2提供的应用,里面就是一个最简单的一个项目
  • docs: Struts2的开发文档和API
  • lib: Strtus2框架的开发的jar包
  • src: Struts2的源码

创建一个web工程

点击 file -> new -> project,找到 Java Enterprise,一般就在 Java 的下一个,选择 Web Application,其他的全部默认,点击 next

引入jar包

所需 jar 包全部在 lib 目录下,准备工作做完,下面开始写代码

执行流程

配置前端控制器

我们说,Struts2 是 WEB 层框架,而 WEB 层框架都是基于前端控制器来实现的。好,那我们先来配置一下前端控制器

我们知道,一个 WEB 工程,最先加载的是 web.xml,我们就在这里面配置,将下面这段代码添加进去

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

这段代码的意思就是,我们配置了一个 strust2 类型的过滤器叫 struts2,过滤所有请求,也就是 <url-pattern>/*</url-pattern>

配置 strust.xml

我们刚配置好了一个 strust2 类型的过滤器,那现在来配置一下strust2

在src当中创建一个配置文件 strust.xml,将下面这段代码添加进去

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <package name="struts" extends="struts-default">
        <action name="hello" class="com.mju.cn.HelloAction">
            <result name="success">./my.jsp</result>
        </action>
    </package>
</struts>

这段代码的意思就是,我们配置了一个 action 叫 hello 指向 com.mju.cn.HelloAction 类,如果访问 hello.action 的话,这个类就响应,结果是 success 的话,就跳转到 my.jsp

创建 action 类

在源码目录下,创建一个类,复制下面代码:

package com.mju.cn;

public class HelloAction {
    public String execute(){
        System.out.println("接受到一个请求");
        return "success";;
    }
}

execute 方法是固定写法,类相应就默认执行这个方法,return 是返回信息,回到 action 里面,看看 result 里面有没有一个叫 success 的

创建 jsp

刚才还有一个 my.jsp 没创建是吧,在 web 目录下新建:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>I'm here~</h1>
</body>
</html>

配置网页入口,在 index.jsp 里写一个链接,指向 hello.action

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
    <a href="hello.action">Hello Struts</a>
  </body>
</html>

运行项目

执行流程:

注:配置文件可以在 blank 项目的 classes 目录下找到

相关配置

配置文件加载顺序

  • default.properties
  • struts-default.xml
  • struts-plugin.xml
  • struts.xml
  • struts.properties
  • web.xml

后配置的常量的值会覆盖先配置的常量的值

Package 和 action

Package

包,这个包与Java中的包的概念不一致。包为了更好管理action的配置。属性:

  • name 包的名称,只有在一个项目中不重名即可。
  • extends 继承哪个包,通常值为struts-default。默认我们继承的是Struts-default。在这个包当中,定义了很多结果类型和很多的拦截器,继承了这些东西之后,action才有了这些功能。
  • namespace namespace+name共同决定了访问路径。名称空间有三种写法,带名称的名称空间 namespace=”/aaa” 根名称空间 namespance=”/” 默认名称空间 namespace=” ”
  • abstract 抽象的,用于其他包的继承,现在这个包想被别人继承,设置abstract值为true,设置成abstract后就不能用自己运行了

action

配置Action类。属性:

  • name 与namespace共同决定访问路径
  • class Action类的全路径
  • method 执行Action中的哪个方法的方法名,默认值execute
  • converter 用来自定义类型转换器,一般不设置,内部提供的转换器已经够用

常量配置

在Struts2的框架中,提供了非常多的常量

在default.properties struts.i18n.encoding=UTF-8 Struts2中所有的post请求的中文乱码不用处理。

struts.action.extension=action,, Struts2请求的默认的扩展名。默认扩展名是.action或者什么都不写。

在Struts2中修改一些常量的值

在 default.properties 当中的值是不允许直接修改的,修改常量的值,可以有三个位置进行修正

  • struts.xml中进行修改,通过 标签
  • struts.properties中进行修改,自己新建的,只能修改常量,基本不使用
  • web.xml中进行修改,通过过滤器的初始化参数来修改常量

后面的会覆盖前面的内容

include

在一个配置文件当中引入其它的配置文件,以后做团队开发时,很多人都需要去修改配置文件,防止被改乱,可以单独的创建一个配置文件,在主配置文件当中引入创建的配置文件

Action类的三种写法

Action类是POJO的类

自己手动实现execute方法

Action类实现一个Action的接口

实现接口时,会让你覆盖execute方法
在此接口当中定义了5个常量(逻辑视图)

  • String SUCCESS = "success"; 成功
  • String NONE = "none"; 没有跳转
  • String ERROR = "error"; 失败
  • String INPUT = "input"; 表单校验时出错
  • String LOGIN = "login"; 登录出错页面跳转

Action类继承ActionSupport类

推荐使用此方式。Actionsupport当中提供了很多功能,数据校验,国际化等一系列操作方法

资源包

我们通常在根目录下新建一个 resource 文件夹,标记为资源包,将所有配置文件放在这



猜你喜欢

转载自www.cnblogs.com/mdz3201/p/struts2_01.html
今日推荐