wbe.xml
任何一个web应用程序都是基于请求/相应模式进行构建的,所以无论采用哪种MVC框架,都离不开web.xml文件的配置。
换句话说,web.xml并不是Struts2框架特有的文件,只有在Web应用中配置了web.xml文件,MVC框架才能真正的与Web应用融合起来。
因此,web.xml文件是所有javaweb应用程序的核心文件。struts2框架需要在web.xml中配置核心控制器StrutsPrepareAndExecuteFilter,用于对框架进行初始化。配置如下
<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>
StrutsPrepareAndExecuteFilter可以包含一些初始化参数,如要加载的xml形式的配置文件,多个配置文件用逗号分隔,如果没有这些参数struts框架会默认加载struts-default.xml、struts-plugin.xml和struts.xml。
StrutsPrepareAndExecuteFilter作为一个filter在Web应用中运行,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。如果用户请求以action结尾,该请求会被输入Struts2框架中进行处理。
Action
实际上,在MVC框架中,控制器是有由两个部分组成,分别如下。
1).核心控制器(Filter):用于拦截用户请求,对请求进行处理。
2).业务控制器(Action):调用相应的Model类实现业务处理,返回结果。
注:在实际开发中,Action类通常都继承自ActionSupport类。
完成一个Action类后,就需要在struts.xml中配置action了。配置如下
<struts>
<!-- name属性可以随便填写 namespace属性为你action的包名 extends属性一定要继承struts-default或者是你自己定义的 -->
<package name="default" namespace="/" extends="struts-default">
<!-- 配置action name属性为action名字 class这个action指向那个类-->
<action name="FwInfoAction" class="action.FwInfoAction">
<!-- 结果为input时,跳转网页login.jsp,在服务端做验证的时候,默认执行input-->
<result name="input">login.jsp</result>
<!-- 结果为guanli_error时,跳转页面login.jsp -->
<result name="guanli_error">login.jsp</result>
<!-- 结果为guanli_success时,跳转页面guanli.jsp -->
<result name="guanli_success">guanli.jsp</result>
</action>
</package>
</struts>
Result
Action类在处理完用户请求后,会返回一个处理结果。这个结果是一个简单的字符串,框架根据这个字符串选择对应的Result,所以我们又将其成为逻辑视图名称。这个逻辑属兔名称由result元素的name属性表示。简单的说就是,用来设定在Action处理结束后,系统下一步将要做什么。
Action的作用
对于struts2应用的开发者而言,Action才是应用的核心。开发者需要提供大量的Action类,并且在struts.xml文件中配置Action。Action主要有三个作用:
1.封装工作单元
可以把Action看作控制器的一部分,其主要职责就是控制逻辑业务,通常使用Action的execute()方法实现这一功能。
2.数据转移的场所
Action会自动将提交的数据,写到对应的属性当中(属性名与提交的参数名相同),记得set、get方法。
3.返回结果字符串
Action的最后一个作用是返回结果字符串,框架根据Action返回的结果字符串选择对应的视图组件呈现给用户。