Struts2框架入门
导读
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Stuts框架基于当年的Webwork和XWork框架,继承其优点并有所改进。本文主要是介绍Struts2框架的环境搭建和一些基本的配置讲解。
目录
一、Struts2框架的搭建
二、Struts2架构简介
三、基本配置详解
四、Action类详解
一、Struts2框架的搭建
1、导包
1)首先使用Eclipse创建一个web工程,如
2)将需要用到的包导入WEB-INF / lib文件夹下:
先到网上搜索struts2框架jar包,
解压后lib包下就有全部的jar包,但是不必全部导入,所以打开apps下的任一工程,如struts2-blank压缩包,解压打开就可以导入这些jar包了:
导入到lib下:
2、书写Action类
Action类是Struts2框架中的核心功能类。这里这是用于测试,先随便写个类:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.fzz.demo; 2 3 //一个普通的类 4 public class HelloAction { 5 6 //随便书写两个功能 7 public String fun1(){ 8 System.out.println("fun1 running..."); 9 return "success"; 10 } 11 12 public String fun2(){ 13 System.out.println("fun2 running..."); 14 return "success"; 15 } 16 }
3、书写主配置文件:struts.xml
主配置文件放置在src下,以struts.xml命名(注意没有2)。
<?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>
<!-- action配置 -->
<package name="hello" namespace="/hello" extends="struts-default">
<action name="helloAction" class="com.fzz.demo.HelloAction" method="fun2">
<result name="success" >/hello.jsp</result>
</action>
</package>
</struts>
这些配置会在下文进行详解,其实对比Action类的书写内容能看懂个大概。
这里使用到了hello.jsp文件,所以我们需要在WebContent目录下新建一个名为hello.jsp的文件(内容随意)。
4、将struts2核心过滤器配置到web.xml中
struts2的核心过滤器如果没有配置,那么这个框架将不会生效。
这是固定写法,不需要记忆,除了filter-name可以随意命名,其他地方不能写错。
5、测试一下
现在在服务器上启动该项目,在浏览器中输入以下网址即可:(这里输入的网址和上面配置文件中的配置有关
到这里,如果页面成功显示,说明你的struts2框架的环境搭建就算完成了。
以前我们使用Servlet和jsp文件来响应浏览器发来的请求信息,现在我们使用struts2框架来代替Servlet的工作,即使用一个Action类+配置文件atruts.xml就可以完成Servlet的工作了,这就是Struts2框架最基本的功能演示。(只能说这里演示的功能太小,完全没有展现Struts2的优势,^_^)。
二、Struts2架构简介
Struts架构图(2.1.3):
这就是Struts2的架构和执行流程。现在看不懂没关系,我们应该在运用中逐渐加深理解。
三、基本配置详解
1、主配置文件struts.xml
<?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>
<!-- package:用于封装action,可以在package下封装多个action -->
<package name="hello" namespace="/hello" extends="struts-default">
<action name="helloAction_*" class="com.fzz.web.helloAction" method="{1}">
<result name="success" >/hello.jsp</result>
</action>
</package>
</struts>
1)package标签
package:用于封装action,可以在package下封装多个action。属性如下:
注:name是标识属性,可以随意命名,但要保证唯一性;extends是默认配置,不可更改;namespace就是设置访问该package下action的上级目录地址。
2)action标签
Action类的配置,属性有:
3)result标签
用于处理返回结果的标签,
name属性:标识处理结果的名称,与return的字符串值一致。
type属性:选择哪种方式处理结果:(默认是请求转发:dispatcher)
标签体:填写处理结果的页面相对地址。
2、常量配置
默认常量配置的位置:
常量配置是键值对的配置,有三种方式来配置:
1)在主配置文件struts.xml中使用<constant>标签添加配置(常用)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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> <!-- 常量配置(键值对) --> <!-- 国际化编码:解决post提交乱码问题 (默认就是UTF-8)--> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <!-- 指定访问action是的后缀名(默认action,,即是空和.action) --> <constant name="struts.action.extension" value="action,,"></constant> <!-- 是否选择开发模式:开发模式下: 1)提供热加载主配置文件,即不需要重启即可生效 2)提供更多的错误输出,方便开发者找到错误。 开发模式是要占用资源的,所以开发完成后就可以将其关闭。默认是false(关闭状态) --> <constant name="struts.devMode" value="true"></constant> <!-- package:用于封装action,可以在package下封装多个action --> <package name="hello" namespace="/hello" extends="struts-default"> <action name="helloAction_*" class="com.fzz.web.helloAction" method="{1}"> <result name="success" >/hello.jsp</result> </action> </package> </struts>
2)在src下新建一个
struts.properties文件,内容以键值对的信息保存:
key=value
3)在web.xml文件下使用<context-param>标签进行配置:
注:常量配置的加载顺序是默认配置文件----->struts.xml文件---->struts.properties---->web.xml。
3、默认配置
Struts2的默认配置文件是:struts-default.xml
下面是package的默认配置
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<action name="index">
<result name="success" type="redirectAction">
<param name="actionName">HelloWorld</param>
<param name="namespace">/example</param>
</result>
</action>
</package>
4、动态方法的调用
1)方式一
缺点:访问格式固定。(在actionName后+!+方法名进行访问)
如:http://localhost:8080/Struts2Demo/hello/helloAction!fun2
2)方式二(常用)
(这里*前的内容在不违反uri命名规则的情况下任意命名,比方法一自由)
路径则为:http://localhost:8080/Struts2Demo/hello/helloAction_fun2
四、Action类详解
Actions是Struts2框架的核心类,因为它们适用于任何MVC(Model View Controller)框架。 每个URL映射到特定的action,其提供处理来自用户的请求所需的处理逻辑。
Struts2中actions的唯一要求是必须有一个无参数方法返回String或Result对象,并且必须是POJO。如果没有指定no-argument方法,则默认是使用execute()方法。(POJO就是简单的Java对象,实际就是普通JavaBeans)。
方式一:
方式二:
方式三: