Struts2 之配置文件编写,动作类(01)

  • Post author:
  • Post category:其他


学习路线:

1.struts入门(配置文件编写,动作类的编写及其访问方式)

2.封装数据和访问Servlet的api

3.ognl和值栈

4.拦截器和注解开发

struts2基本概念

Struts2是一种基于MVC模式的轻量级Web框架.

Struts2是Struts1的下一代产品,是在 Struts1和WebWork技术的基础上进行合并后的全新框架(WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的J2EE Web框架,它也是一个MVC框架)。虽然Struts2的名字与Struts1相似,但其设计思想却有很大不同。实质上,Struts2是以WebWork为核心的,它采用拦截器的机制来处理用户的请求。

总而言之,Struts 2可以理解为WebWork的更新产品

入门:

环境配置

1.下载struts2

Struts2的官网:

https://struts.apache.org/


解压zip

新建项目(web)

2.解压下的目录

  • apps:该文件夹存用于存放官方提供的Struts2示例程序,这些程序可以作为学习者的学习资料,可为学习者提供很好的参照。各示例均为war文件,可以通过zip方式进行解压。
  • docs:该文件夹用于存放官方提供的Struts2文档,包括Struts2的快速入门、Struts2的文档,以及API文档等内容。
  • lib:该文件夹用于存放Struts2的核心类库,以及Struts2的第三方插件类库。
  • src:该文件夹用于存放该版本Struts2框架对应的源代码。

3.导入jar包:

struts解压目录下/apps/struts-blank.war,这个是基本的空白包,把里面的jar包都导入我们项目即可

4.编写一个连接

<a href="${pageContext.request.contextPath }/hello">a_入门</a>

5.编写HelloAction(有点特殊要求)

/**

* 需要提供一个公共的方法

* 方法名:execute

* 返回值:String

* 参数:无

*/

public String execute(){
System.out.println("收到了请求");
return null;
}

6.配置核心过滤器(前端控制器)

在web.xml中配置 StrutsPrepareAndExecuteFilter

找包的快捷键ctrl+shift+T

下面是配置的代码

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

6.编写配置文件

要求:

名称:struts.xml

路径:src目录下

导入约束

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

测试

配置action的跳转页面

a.让action的方法返回一个字符串(逻辑视图)

b.在struts.xml的action标签下配置字符串对应的页面

这个配置会在下面有详细讲解

核心过滤器中的init方法的作用

加载配置文件

配置文件加载顺序

struts提供好的(我们不能修改)

default.properties

struts-default.xml

struts-plugin.xml

我们自己可以编写的

struts.xml(我们以后主要编写的)

struts.properties

web.xml中过滤器的配置

注意:

后面的同名配置会把之前的配置替代掉

配置文件的编写

常量的配置:

struts.xml(我们以后主要编写的)

例如:

常量:后缀名

struts.properties(几乎不用)

需要我们自己提供 src

struts.action.extension=xxx

web.xml中过滤器初始化的配置(注解的时候会用)

在filter标签下配置

<init-param>
    <param-name>struts.action.extension</param-name>
    <param-value>xyz</param-value>
</init-param>

常见的常量:

struts.devMode 开发者模式,默认值false 配置为true之后,不需要重启服务器就可以动态加载配置文件

struts.action.extension 后缀名 默认值:action,, 后缀可以不写也可以写action

<!-- 常量:后缀名 -->
    <!-- <constant name="struts.action.extension" value="abc"></constant> -->

    <!-- 常量:运行动态方法执行 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<package name="demo1" extends="struts-default" namespace="">

        <!-- 
            action:
                name属性:和namespace属性组成访问路径.注意:name中不要出现 "/" (版本不一样,常量的配置)
                class属性:action的全限定名
                method属性:指明这次请求对于的方法是那个. 默认值:execute
         -->
        <action name="hello" class="com.itheima.a_hello.HelloAction">
            <!-- 
                result:
                    name属性:action中方法返回值(逻辑视图)
                    标签体中写跳转的路径:
                        跳转到jsp:写内部路径
             -->
            <result name="aa">/1.jsp</result>
        </action>
    </package>

struts.xml中action的配置

action的配置

package标签:包

name属性:起个包名,项目中唯一,继承的时候会用到

extends属性:声明当前包继承那个包 一般我们间接或者直接继承的都是 struts-default (struts提供拦截器,跳转方式等才好用)

namespace属性:和action标签下的name属性组成访问路径

写法3种:

不写 namespace=””

根路径 namespace=”/”

带路径 namespace=”/customer”

action:

name属性:和namespace属性组成访问路径.注意:name中不要出现 “/” (版本不一样,常量的配置)

class属性:action的全限定名

method属性:指明这次请求对于的方法是那个. 默认值:execute

result标签:(明天详讲)

name属性:逻辑视图名称(action中方法的返回值)

标签体:配置跳转路径

jsp:内部路径

下面是配置文件的代码

<struts>
    <!-- 
        package:包
            name属性:起个包名,项目中唯一,继承的时候会用到
            extends属性:声明当前包继承那个包 一般我们间接或者直接继承的都是 struts-default (struts提供拦截器,跳转方式等才好用)
            namespace属性:和action标签下的name属性组成访问路径
                写法3种:
                    不写  namespace=""
                    根路径 namespace="/"
                    带路径 namespace="/customer"

            了解:
                abstract属性:抽象包 声明当前包是否是一个抽象包.一旦包为抽象包 action就不能被访问了.
     -->
    <package name="demo1" extends="struts-default" namespace="">
    <!-- <package name="demo1" extends="struts-default" namespace="/customer"> -->
        <!-- 
            action:
                name属性:和namespace属性组成访问路径.注意:name中不要出现 "/" (版本不一样,常量的配置)
                class属性:action的全限定名
                method属性:指明这次请求对于的方法是那个. 默认值:execute
         -->
        <action name="hello" class="com.itheima.a_hello.HelloAction">
            <!-- 
                result:
                    name属性:action中方法返回值(逻辑视图)
                    标签体中写跳转的路径:
                        跳转到jsp:写内部路径
             -->
            <result name="aa">/1.jsp</result>
        </action>
    </package>
</struts>

include的配置

包含其他的struts配置文件.

作用:分模块开发中使用

例如:

<include file="com/itheima/a_hello/struts_hello.xml"></include>

action类的编写方式

(了解)方式1:

普通的类 (POJO) 没有继承也没有实现

一般需要提供一个execute方法

(理解)方式2:实现Action接口

提供了5种逻辑视图(5个字符串)

success:成功之后

error:失败之后

login:跳转到登录

none:不跳转 null

input:我们不用,struts在内部发生错误的时候使用input视图

(★)方式3:继承ActionSupport类 (ActionSupport也实现Action接口)

action的访问方式

(了解)方式1:通过method配置

(★★)方式2:通配符配置

前提:要求访问路径和要执行的方法名有关系

例如:访问的路径为 /day/saveOrder.action 要执行orderAction中的save方法

配置文件中 {1} 指的是name中第一个*所代表的字符串

更加变态的写法:

访问的路径: /day/save_UserAction.action

配置文件中:

(★)方式3:动态方法执行

版本不一样有的默认不好使(配置常量)

允许动态方法执行 配置常量为true

struts.enable.DynamicMethodInvocation

路径:

/day/user!方法名.action

配置文件:

<action name="user" class=".."/>

查询所有客户

步骤:

1.新建数据库和表

2.创建web项目

导入jar包

hibernate

驱动

日志

struts

3.配置文件

hibernate.cfg.xml

web.xml

struts.xml

日志配置文件

4.编写持久化类和映射文件

5.编写customer相应的action service dao

6.导入页面

获取request对象

ServletActionContext.getRequest();



版权声明:本文为yjy91913原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。