1,Struts2框架介绍
Struts2框架是MVC流程框架,适合分层开发。框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计。能够处理前端页面的相关操作(如:接受参数,跳转页面等),类似于与Servelet。
2.如何使用Struts2框架
1)导入相关的Jar包
commons-fileupload-1.2.1.jar —–>文件的上传
commons-io-1.3.2.jar—–>文件的上传
freemarker-2.3.15.jar—–>视图展现技术
ognl-2.7.3.jar—–>对象图形导航语言,用于做数据操作
struts2-core-2.1.8.1.jar—–>框架的核心jar包
xwork-core-2.1.9.jar—–>WebWork框架的核心包
2)配置web.xml环境 配置核心控制器
<!-- 配置框架的核心调度器 -->
<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> <!-- 指定过滤路径,*三种写法:*.doction *.do /-->
</filter-mapping>
3)配置struts.xml文件
将拷贝的配置文件放在根目录src下。struts.xml文件主要是配置请求路径对应action类的,以及结果跳转路劲。
<?xml version="1.0" encoding="UTF-8" ?> <!--声明版本 和编码格式-->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- package配置包:包名、继承自struts-default、默认的所在空间 -->
<package name="example" namespace="/example" extends="struts-default">
<!-- action配置Action类 name属性指定action的访问路径 class指定配置的action类-->
<action name="HelloWorld" class="struts2.action.HelloWorldAction">
<!-- result配置跳转:根据方法的返回值,实现跳转
name指定方法的返回值
type指定跳转方式:请求转发(默认)/重定向type="redirectAction"
默认处理的是success方法
-->
<result name="success">/success.jsp</result>
</action>
<!-- 通配符访问指定的方法 method属性指代要访问的方法,由*号决定,也就是你前面调用acction类的方法-->
<action name="demo02_*" class="com.zuxia.action.Demo02Action" method="{1}">
<!-- 跳转到其它页面 -->
<result name="add">/ok.jsp</result>
<result name="update">/ok.jsp</result>
<!-- 跳转到其它action -->
<result name="query" type="redirectAction">other!test</result>
</action>
<action name="other" class="com.zuxia.action.OtherAction">
<result name="t">/ok.jsp</result>
</action></package>
</struts>
4)acction类中的写法
Action(动作、功能)——代表一个具体的业务功能(如:登录Action、添加Action等)
package com.cy.action;
import com.opensymphony.xwork2.ActionSupport;
public class Demo01Action extends ActionSupport {
//action类默认执行的方法 execute()
@Override
public String execute() throws Exception {
System.out.println("访问了action........");
return "success";
}
public String add(){
System.out.println("add..............");
return "add";
}
public String update(){
System.out.println("update..............");
return "update";
}
}
注释:Action类中方法返回的String字符串,去匹配result标签中的name值,进行跳转。
Struts2框架中的Action类是一个单独的javabean对象。不像Struts1中还要去继承HttpServlet,耦合度减小了
5)界面的调用
<body>
<%--访问action的默认方法 --%> <!--地址写:在 struts.xml中配置的action配置Action类的name属性-->
<a href="demo01">访问action</a>
<%--方法action中指定的方法 --%>
<a href="demo01!add">访问action的add方法</a><br /><br />
<a href="demo01!update">访问action的update方法</a><br /><br />
<%--使用通配符访问指定的方法 --%>
<a href="demo02_add">访问action的add方法</a><br /><br />
<a href="demo02_update">访问action的update方法</a><br /><br />
<%--访问其他action --%>
<a href="demo02_query">访问demo02Action,再访问otheraction</a>
</body>