strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

对应视频配套地址: https://www.imooc.com/video/9088

项目创建:

    Eclipse:

1.创建一个动态项目strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

 

2.将对应的核心jar包导入到WebContent中的lib中strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

            commons-fileupload.jar:文件上传

            commons-io.jar:

            commons-lang.jar:

            commons-logging.jar:

            struts2-core.jar:

            xwork-core.jar:

            freemarker:模板引擎,根据模板生成

            ognl:一些表达式

            javassist.jar:解析java类文件的包

3.在项目中引用jar包

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳->strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳->strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳->strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

4.在web.xml中配置过滤器,将所有请求转交到struts2

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

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

5.在src下边创建struts.xml配置文件

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

6.在src下边创建上图中对应的类文件

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

7.创建对应的jsp文件

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

开启运行即可,如果没有继承tomcatServer,需要现在eclipse中添加对应的tomcat服务器

4-3 Action搜索顺序

http://127.0.0.1:8080/struts/path1/path2/path3/student.aciton

        

        程序会首先从path3开始检索,看看目录下有没有path3包,有的话看看有没有相应action,

        否则看看目录下有没有path2包,有的话看看有没有相应action,

        否则看看目录下有没有path1包,有的话看看有没有相应action,

        所有的包检索完了都没有对应aciton那么会检索项目根目录下,即\下有没有对应的action即

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

4-4 动态方法调用

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

 url访问HelloWorld.action时,默认请求execute()方法

 

动态方法调用:(为了解决一个Action对应多个请求的处理,以免Action太多)

    1.置顶method属性 

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

通过url访问addAction中的add方法,然后映射到com.imooc.action.HelloWorldAction类中的add方法

    2.感叹号方式(不推荐)

        需要提前在struts.xml配置文件中开启一个常量值

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

然后配置相应的action

   strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

如何用感叹号方式调用呢:

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳默认跳转到result.jsp

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳helloworld!add.action跳转到add.jsp

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳helloworld!update.action跳转到update.jsp

3.通配符方式

        simple:

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

helloworld_add.action跳转到add.jsp

    advance:

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

访问helloworld_add.action,那么struts框架会先将helloworld匹配给{1}即请求类helloworldAction.java,然后下划线后边的add匹配给{2}即请求类helloworldAction.java中的add方法,然后如果返回add|update都打开add.jsp

4-5 指定多个配置文件

    在struts中使用include包含多个配置文件

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

然后创建相应的helloworld.xml文件,并且helloworld文件和struts文件结构一致

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳同理可以多个文件引入

4-5 默认Action的使用

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

在项目中打开不存在的action时,就会出现404访问错误,用户体验较差,遂使用默认action

    ForExample:

        在任意struts的action路径索引文件中

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

这样再打开不存在的action时,就会跳转到error.jsp了    

4-6 Struts后缀

    修改访问url时的action,比如http://127.0.0.1:8080/helloStruts/helloworldAction.action,想将action改为do或html之类的(将动态action页面伪装成静态html页面)

    只需要在struts.xml配置文件中,添加参数:<constant name="struts.action.extension" value="html" ></constant>

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

如果不想要后缀,即访问http://127.0.0.1:8080/helloStruts/helloworldAction

    只需要将<constant name="struts.action.extension" value="" ></constant>中的value置为空即可

    

    如果不设置这个参数,直接访问.action是没有问题的

在struts.properties中配置

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

在web.xml中配置

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

4-7    在struts2中接收参数

    4-7-1使用Action的属性接收

  在jsp页面中设置form表格:strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

 

配置处理action:strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

具体类处理事件:在Action类中声明form中的名称为name值的两个成员变量,并实现相应的get/set方法

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

4-7-2    使用DomainModel接收

            先声明对应的实体类对象,也实现get/set方法

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

然后在Action中声明这个对象,在通过对象引用访问成员变量

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

最后修改表格中的传入参数,将参数与实体类名称绑定,form表格中的user即和Action类中声明的User对象user一致

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

4-7-3    使用ModelDriven来接收

                ForExample:

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

只需要在Action类中集成接口,并且重写getModel方法,最后将对象实例化即可

                    传入多个值:

比如接收strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳中的bookList   

先在User中声明bookList对象

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

  在Action中做相应处理strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

 

  传入一个数组形式的值:strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

  此时bookList不再只简单是String类型了,改成user集合了

  只需修改对应的form表格中strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

 

    对应Action中的strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

4-9处理结果类型概述

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

在struts定义的映射中,<resutl name="success">/success.jsp</rsult>,其中result元素中的name就是result元素的逻辑视图名称

如果省略成<result>/success.jsp</result>,即使省略了name属性,系统也将采用默认的name属性值,默认的name值是success

路径前方的斜线strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳代表的是项目的根目录,如果不带斜线,就会索引到相应struts.xml文件夹对应下的jsp文件

 

com.opensymphone.xwork2.Action

SUCCESS:正确执行,返回相应的视图

NONE:表示Action正确执行,但并不返回任何视图

ERROR:表示Action执行失败,返回到错误处理的视图

LOGIN:Action因为用户没有登录的原因没有正确执行,将返回该登录视图,要求用户进行登录

INPUT:Action的执行,需要从前端界面获取参数,INput就是代表这个参数输入的界面,一般在应用中,会对这些参数进行验证,如果验证没有通过,将自动返回该视图

 

4-10 验证INPUT的代码演示

    

    首先在映射文件中定义result为input的处理

strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

在form中添加name为age的变量strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

最后在aciton中添加对应的拦截处理错误strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

 

4-11    处理结果类型

    

    处理结果是通过在struts.xml使用<result/>标签配置文件

    根据文件的不同,可分为2种结果

                          1:局部结果,将<result>作为<action>的子元素   

                          2:将<result>作为<global-result>元素的子元素

 

    OGNL:Object Graphy Navigation language

    在对应的映射文件中定义strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳

  在对应的class文件中定义strut2入门教程,手把手教你搭建项目,配合fcming老师视频观看效果更佳