zoukankan      html  css  js  c++  java
  • 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 文件夹,标记为资源包,将所有配置文件放在这



  • 相关阅读:
    Power BI 根据用户权限动态生成导航跳转目标
    Power BI Tooltips 增强功能
    Power BI refresh error “could not load file or assembly…provided impersonation level is invalid”
    SQL 错误代码 18456
    如何使用SQL Server Integration Services从多个Excel文件读取数据
    通过表格编辑器将现有表引入Power BI数据流
    Power BI 中动态增长的柱状图
    ambari2.7.3离线安装hdp3.1.0时,ambari-hdp-1.repo中baseurl无值
    ambari 安装 cannot download file mysql-connector-java from http://8080/resource/mysql-connector-java.jar
    洛谷P4180 [BJWC2010]严格次小生成树
  • 原文地址:https://www.cnblogs.com/mdz3201/p/struts2_01.html
Copyright © 2011-2022 走看看