struts2框架入门

2025-01-04 11:42:45

现在只是停留在会使用struts2的层次,自己也想继续深入研究,但是感觉自己的知识面还没那么广,那就等以后工作之后,在回过头来将那几个框架研究一下!

一、Struts2的介绍

1、讲Struts2框架之前,我们需要知道框架是什么呢?估计大多数初学者都只知道其名却不知其意,框架就是一个半成品,别人将一些功能已经写好了,我们只需要拿来用即可,像我们之前使用的dbutils框架,操作数据,只需要两行代码,不用像一开始一样,老老实实的写一大堆代码,这就是开发框架的意义所在。简化开发(个人对框架认识的理解,其他还有在框架上加自己的代码这些就不说了,肯定还有别的很多功能,这只是我最好理解的一种方式)。    而Struts2就是一个web层框架,并且是使用MVC设计模式实现的的一个框架,之前使用的是Serlvet+JSP来开发web项目,现在用Struts2框架来替代他,那Struts2到底有哪些优点呢?那就需要我们自己来研究它了。          请求 -----------  Servlet -------------- JSP    serlvet+JSP          请求 ----------- Action  -------------- JSP    Struts

二、Struts2的架构图分析

1、首先了解前,必须先要知道Struts2的架构图,知道是如何工作的,做了哪些事情,可以不必那么详细的知道每一块具体的细节,先让我们自己有个大概的了解,这样我们就更容易去接受它,使用它。

struts2框架入门

2、这里注意一点,lib下面有100多个jar包,并不需要导入这么多,我们在apps(案例)中找jar包即可,apps-blank.war是最简单的案例,我们把其后缀名改为zip,然后解压,找到其中的lib目录下的jar包复制就行了

struts2框架入门

4、第三步:编写核心Action类          Action类可以有三种不同的类型             1、普通类,POJO,什么接口也不实现,什么类也不继承             2、实现Action接口             3、继承ActionSupport类。          这里我们使用普通类即可,后面两个在下面会讲解到,最终我们会选择使用继承ActionSupport类,具体原因看下面。

struts2框架入门

6、struts.xml的配置详解

struts2框架入门

2、第一个需要知道的配置文件:struts-default.xml          从名字上看,就应该知道该是struts的一个默认的配置文件,而我们前面编写的一个startus.xml中应该会使用该默认配置文件中的内容,其中的格式跟我们写的struts.xml是一样的。          分两大部分,                第一部分 全是bean开头的配置,暂时不管他是干嘛用的,后面会学习,而我们的重点是第二部分                第二部分 看到了熟悉的内容,package,并且该package的名字为struts-default。这就是我们需要查找的包,其中的内容包括了三个部分                    1、<result-types></result-types>看到这里我们就明白为什么我们的结果中跳转页面的方式默认是dispatcher(转发),因为在继承的struts-default包中将其设置成了默认的,还有很多其他的type可选择,比如其中的redirect,就是重定向,比如redirectAction,从一个action跳到另一个action中执行。比如stream,文件上传时用的,等等这些等后面会详细讲到。有个大概映像即可

struts2框架入门

5、321行:配置说默认的一个拦截器为defaultStack,这是一个拦截器栈,其内容在第二部分中,323行,这里说的class为在我们action中的class,如果不写则为com.opensymphony.xwork2.ActionSupport。ActionSupport这个类就我们下面要讲解的action继承它来当action,那时候再与普通类当action有什么区别。      总结:struts-default.xml的功能就是将一些已经有的功能加入到配置文件中,然后让我们编写的struts.xml继承其中的包,那么我们就具备了这些功能,不用自己手动编写了,如果想在上面添加功能,在编写即可。到这里为止应该就解决了为什么要继承struts-default这个包了把。

6、第二个配置文件:default.properties,这是一个常量的配置文件。其中放的都市常量。 

struts2框架入门

2、那么就可以直接使用http://localhost:8080/xxx/xxxAction!add  直接调用xxxAction中的add方法了,并且在struts.xml中的action配置中,就不需要配置method属性的值了。这样做就解决了写死method值的问题通配符的使用这个比较重要,使用的比较多,即,<action name="userAction"> , action.name可以使用通配符星号(*),在action.class、aciton.method、result.name 处可以使用{n}方式匹配星号,举个例子就明白了        案例一:<action name="userAction_*"> 在action.class、action.method、result.name三个地方可以使用{1}来获取第一个星号所匹配的内容            请求路径:..../userAction_add   <action name="userAction_* class="..." method="{1}"/>  那么{1}拿到的内容则是add,将执行add方法        案例二:<action name="userAction_*_*">  {1}匹配第一个* {2}匹配第二个*                请求路径 :.../userAction_add_success <action name="userAction_*_*" method="{1}"><result name="{2}">                      {1}匹配add方法,{2}匹配返回值的名称success           案例三:使用*_*_*,通过{1}{2}{3}获得,可以自己尝试。注意:package.namaspace的特点,当namespace为"/a"时,正常通过/a/xxxAction就能访问到,但是如果/a/b/c/xxxAction是否能访问到呢?答案是YES,因为会一层一层往下找,什么意思呢?     http://localhost:8080/xxx/a/b/c/xxxAction 找不到,往下一层找     http://localhost:8080/xxx/a/b/xxxAction 找,也找不到,继续往下     http://localhost:8080/xxx/a/xxxAction 我们这里配置的namespace为"/a",所以就找到了,如果我们namespace="/",那么/a/b/c/xxxAction就访问不到了,只有/xxxAction能访问到。但是如果namespace="",那就找得到,什么都不写的意思是不管什么路径都能匹配到。

六、action类实现的三种方式

1、6.1、普通类,上面写helloworld就是使用的普通类6.2、实现Action接口,重写excute方法,接口中就声明这一个方法。6.3、继承ActionSupport类,可以不必重写execute方法,只需要写自己想要的方法即可,一般开发中就使用这种方法,为什么呢?因为方便,ActionSupport类提供了一些我们所需要的常量,比如success字符串常量,内部还实现了execute方法,我们就不必自己写了。那么很多人就问,这不是多此一举吗?继承它跟不继承它的区别不大呀?哈哈,这样举个例子吧,你想追一个女孩子,有一天哪个女孩子哭了,擦泪的纸巾在女孩子的旁边,那个女孩子完全可以自己拿纸巾,但是你为了追她,体现自己好的一面,肯定是自己去拿纸巾出来递给她,虽然可能你拿比她自己拿更麻烦一点,但是这样让她对你更有好感呀, 那么这个继承actionSupport提供的一些常量等,也就是这个道理。并且它还不止止这点功能,它自己内部帮我实现了很多接口,后面会有讲解到,现在就晓得,以后写的话就通过这种方式去写action类。

七、总结

1、这一节并没有什么特点难懂的东西,知道下面几点即可1、struts2的架构图,并且知道一个请求过来都做了些什么东西,是如何找到action的。2、struts2的两个重要的配置文件,一个default-properties,一个struts-default.xml。知道这两个配置文件在哪里,知道其中的一些大概的内容3、struts.xml的编写,和其中各种配置的含义4、会编写一个简单的helloworld。

猜你喜欢