Struts简介
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
工作原理
struts2配置
搭建开发环境
struts2的核心包
- commons-logging-*.jar Apache旗下commons项目的log日志包
- aopalliance-*.jar这个包为AOP提供了最普通和通用的接口
- commons-fileupload-*.jar
- commons-io-*.jar struts的上传下载 两者缺一不可
- commons-lang-*.jar为java.lang包提供扩展
- freemarker-*.jar 一种前台页面模板,应用比较广泛
- ognl-*.jar 动态图导航语言,struts2处理前台页面的核心语言,相当实用
- antlr-*.jar 一种工具,它可以接受词文法语言描述,并能产生识别这些语言的语句的程序
- struts2-core-*.jar struts2的核心包
- xwork-core-*.jar webwork的核心包,因为struts2的前身是webwork,所以这个是必须的
- Struts2.3.4.1 异常解决(javassist-*.GA.jar包的添加)
(* :表示版本号 )
struts2中各个jar包的具体作用
如何快熟找到需要导入的包?
第一步的话就是下载struts2,并且解压。这个的话之前写的经验已经详细说过了。不会的可以去看看。
解压出来之后呢,点击apps目录。这个目录存放的是struts2的例子程序
把struts2-blank.war名为struts2-blank.jar文件,然后进行解压
解压之后,是一个让人熟悉的web项目的目录。这里点击WEB-INF目录,然后打开其目录下的lib目录
之后你就能看到struts2所需要的最基本jar包了。一共13个(当然jar的个数跟版本有点关系)。你就复制这个13个jar文件到你创建的项目lib下就可以了。这样你就不用在106个中挑选了
配置相关文件
配置struts.xml
放置在项目的src目录下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="index" class="com.LoginStruts">
<!-- action name(index)为浏览器访问地址 class为action类的路径 -->
<result name="ok">/index.jsp</result>
<!-- result name为action类返回值 /index.jsp跳转页面-->
<result name="no">/error.jsp</result>
<!-- result name为action类返回值 /error.jsp跳转页面-->
</action>
</package>
<!-- Add packages here -->
</struts>
配置web.xml
主要是通过拦截器来控制进入Action
<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>
开发
实现Action接口
package com;
import com.opensymphony.xwork2.Action;
public class LoginStruts implements Action{
public String execute() throws Exception {
System.out.println("进入 execute");
if(1==1){ //逻辑判断,不同的逻辑返回不同的值
return "ok";
}
return "no";
}
}