Struts2框架的搭建



叙:之前学习的hibernate框架,hibernate框架是作用在数据库上的最为面向对象的框架,现在学习的是struts2框架,这个框架作用在三层架构的第一层,取代了servlet层,它比servlet更为先进,原因在于struts2中封装了各种功能,其设计模式很优秀,是可插拔式的(在过滤器中拆除、安装、设计自己想要的拦截器以实现功能划分等),而且其设计思想也很先进,是面向切面思想(aop);废话不多说现在开始~

1、创建项目

项目名称为:struts2


2、获取、导入jar包

创建好后准备导入架包;使用的这个jar包中存放了很多开发中经常用到的jar文件~
jar包文件
这个jar包比较老了,大家可以使用更新的版本的~
既然说到导入jar包了,那么可定要有获取jar包的路径~

2.1 获取jar包

一般是在网上通过官方网站下载获得的,提供给大家的网址:https://struts.apache.org/download.cgi#struts2518,这个是直接进入选择版本并下载的页面,页面如下图所示:
下载jar包网页界面
进入上图界面后选择完整版的struts2框架jar包压缩包,选择如下图所示的文件:
下载选择


2.2 导入jar包

下载下来后将压缩包解压并找到apps文件夹,在这个文件夹中存在一下几个压缩包,如下图所示:
解压内部文件
然后将第一个struts2-blank.war文件解压,解压打开后找到lib文件,会看到此文件夹下的所有jar文件如下图所示:
路径:在这里插入图片描述
struts2-blank.war内部文件
然后将所有jar文件都复制到新创建项目struts2_1的lib文件夹下即可;(不要忘记build path一下或者运行一下,运行一下项目后eclipse会自动build path,建议采用后一种方法~)
解释:
struts2-blank.war这个文件夹是封装好的例子,其他的几个也是封装好的例子,不过blank这个是最为简单和基础的,框架的搭建适用于学习如何搭建的以及编写一个小的demo即可,所以使用struts2-blank.war这个里面的jar文件足以;


3、导入约束

约束顾名思义,就是约束我们编写的代码是否合乎规范,帮助我们快速找到代码编写问题的~

3.1 无网情况下导入约束

首先,找到导入的jar包经过build path后产生的 ,其位置在项目的Java Resources → Libraries 文件下,找到struts2-core-2.3.24.jar文件,打开找到如下图所示的约束文件:
约束包
我们下载使用的struts2的开发框架文件是2.3版本的,因此选择导入struts-2.3.dtd版本的约束文件即可,如果没此文件的话可以自己做一个,会在下边3.3中将如何自己制作一个约束文件;
现在默认有struts-2.3.dtd的约束文件,那么,我们打开在项目中找到的struts-2.3.dtd这个文件,然后复制如下图红框中所示的代码段:
约束导入代码
然后依次打开eclipse中的Window → Preferences,preferences在eclipse中用于参数配置的,其面板如下所示:
配置约束
在左上角的输入框中输入“catalog”找到XML Catalog选项并点击会看到如下图所示:
设置位置
点击大红框中的Add按钮,在第一个框中导入自己的struts-2.3.dtd文件的路径,第二个框Key Type中将Public ID选项改成 URI,第三个框中输入刚才复制的路径即可,完成图如下图所示:
设置样式
然后点击OK按钮即可;


3.2 制作一个约束文件

如果没有相应的约束文件那么我们可以自己自做一个,方法很简单,同样的找到下图中的文件:
制作约束参考
选中其中自己需要的(默认为struts-2.3.dtd)并打开,将其中的内容全部复制,然后创建一个新的文本文档,将复制的代码全部粘进去并保存。最后修改文档文本的名称要和复制的源文件的名字一样,后缀名改为“.dtd”即可;
之所以复制内容到文本文档中然后再改名字而不直接复制源文件是因为源文件dtd格式的不允许在eclipse中直接复制;


3.3 有网情况下导入约束

在有网的情况下可以直接进行配置,其配置方法如下:
打开项目中libraries文件夹,找到其中的struts-2.3.dtd文件,复制其中两行的代码,如图下所示,第一行代码编号为①,第二行代码编号为②;
有网约束
然后打开window中的preferences进行参数配置,找到约束文件配置(XML Catalog)项,然后将编号为①的代码粘贴到Key框中,编号为②的代码放到location框中,Key type的值不用改变,仍然使用Public ID,最终配置成如下图所示:
约束导入位置


3.4 测试约束

在项目的src路径下创建一个struts.xml文件(这个在struts2框架中是必须要有的,是struts2框架的核心配置文件),然后打开struts-2.3.dtd文件,复制如下图所示的代码:
代码中添加的约束
将此段代码粘贴到刚才创建的struts.xml文件头部
粘贴位置
然后将在下面编写代码,输入“<str”会有补全提示,补全后在标签之间打上“<”会提示一堆补全提示既是约束导入成功;
成功导入的样式

注:
1) 在无网络的情况下使用了有网配置的话是没有任何用的,有网配置只是在有网的情况下才能使用,因此,建议使用无网配置,不算复杂但是很省心;
2) 配置完后如果没有效果可以尝试关闭struts.xml文件再次打开尝试,使其重新加载;


4、Struts2的第一个测试Demo

4.1 创建Action方法

创建一个action类,名为TestAction:
创建action
然后在类中创建相应的方法,如下所示;

package com.java.Action;
public class TestAction {
	public String StrutsTest(){
		System.out.println("You are right!");
		return "success";
	}
}


4.2 在struts.xml中配置

其中主要的代码如下所示,其中在标签中的标签有三个,人别是、、这三个;

<struts>
   <package name="test" namespace="/test" extends="struts-default">
   <action name="TestAction" class="com.java.Action.TestAction" method="StrutsTest">
      <result name="success">/Test.jsp</result>
   </action>
   </package>
</struts>

标签解释:

标签名 属性名 属性值 备注
Package name test(任意) 这个是package的名子,用以区分多个package,可以随意写只要不重复

namespace /test 这个是页面跳转使用的,在书写时必须要带上“/“才行,不过一般只使用“/”也行

extends struts-default 继承struts的默认包,这个是定死的
Action name TestAction 填写action类名,这个是设置调用名为“TestAction”时就找这个action标签的

class com.java.Action.TestAction 这个action类“TestAction”他的全路径,告诉电脑这个action类的路径

name success 这个属性值是不定的,据填写什么要看action类结束后返回的字符串

4.3 过滤器的配置

Struts2是基于过滤器的框架,因此,做后的步骤就是配置过滤器,配置步骤很简单,但是很重要,只有配置了过滤器的struts2才是真正的struts2框架,在web.xml文件中配置的代码如下:

<!-- struts2核心过滤器配置 -->
  <filter>
  <filter-name>test</filter-name>
  <!-- struts2核心过滤器需要配置的完整类名 -->
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>test</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

其中难点在于filter的类名比较长比较难记,不过可以不用记,找到filter的类复制其类名即可,寻找方法如此即可:使用CTRL+SHIFT+T组合键弹出如下图所示的检索框,在框内输入“strutspre…”只用输入这几个字母就会出现下图中的大红框框住的一个选项,点进去即可;
filter类名查找
点击进入大红框框住的类,进入如下图所示的界面,复制下图中红框的类名粘贴到web.xml过滤器配置的过滤器类名中即可;
复制filter类名
配置完成后如上面的代码即可;


4.4 运行

万事俱备,只欠东风,现在 所有的准备工作都已经准备好了,就差跑一遍程序了,首先右击项目Run as → Run on server ,会报如下错误:
所报错误
然后在浏览器网址后边输入之前在struts.xml中配置的namespace的值,然后斜杠再加上action标签中的name的值即可;
添加的数据
添加完后运行结果如下图所示:
云心结果
如此便是完成了struts2框架的初步搭建学习;


《本章完》