Struts2入门学习(一)

来源:互联网 发布:小程序跳转到淘宝app 编辑:程序博客网 时间:2024/06/09 14:15

Struts2框架

  • 什么是软件框架:

1、框架 是 实现部分功能的代码 (半成品),使用框架简化企业级软件开发 ,提高开发效率。
2、框架已经实现了一些基础功能,这样就可以提高开发效率!

  • struts2框架简述:

1、Struts 2是在 struts 1和webwork的技术基础上进行了合并的全新的Struts 2框架。
2、其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以webwork为核心
3、struts2=struts1+webwork;
4、struts2是一个标准的mvc框架。

  • XWork—它是webwork核心,提供了很多核心功能:

1、前端拦截机(interceptor)
2、运行时表单属性验证
3、强大的表达式语言(OGNL – the Object Graph Navigation Language)
4、IoC(Inversion of Control反转控制)容器等

  • struts2框架核心功能:

1、请求数据自动封装;
2、文件上传的功能;
3、对国际化功能的简化;
4、更强大、更易用输入校验功能;
…..

Struts2框架入门

Struts2框架执行流程

  • index.jsp——>HelloServlet——–>hello.jsp web开发流程
  • index.jsp——>HelloAction———>hello.jsp struts2流程

接下来就是开发阶段

  1. 前往Apache Struts开源网站去下载Struts源码及Jar包:http://struts.apache.org/download.cgi
  2. 导入Struts运行必要jar包(8个):
    • struts2-core-2.3.1.1.jar(Struts 2框架的核心类库)
    • xwork-core-2.3.1.1.jar(Command模式框架,WebWork和Struts2都基于xwork )
    • ognl-3.0.3.jar(对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性)
    • freemarker-2.3.19.jar (struts的标签模板库jar文件)
    • commons-logging-1.1.x.jar(Struts 2框架使用这个日志,包来支持Log4J和JDK 1.4+的日志记录)
    • commons-fileupload-1.2.2.jar(文件上传组件,2.1.6版本后需要加入此文件)
    • commons-io-2.0.1.jar(传文件依赖的jar包)
    • commons-lang-2.5.jar:(对java.lang包的增强)
  3. 在web.xml中引入struts核心过滤器:
<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>

.
4. 开发Action

注意:
1. action类,也叫做动作类; 一般继承ActionSupport类
即处理请求的类 (struts中的action类取代之前的servlet)
2. action中的业务方法,处理具体的请求
(1)必须返回String
(2)方法不能有参数

public class HelloAction extends ActionSupport {    // 处理请求    public String execute() throws Exception {        System.out.println("Hello Struts");        return "succeed";    }}

.
5. 配置strurs.xml:

 <package name="default" namespace="/" extends="struts-default">       <action name="hello" class="cn.itcast.action.HelloAction" method="say">            <result name="succeed">/hello.jsp</result>       </action> </package>

strurs.xml配置说明:

package   定义一个包。 包作用,管理action。 (通常,一个业务模板用一个包)name  包的名字; 包名不能重复;extends 当前包继承自哪个包    在struts中,包一定要继承struts-default    struts-default在struts-default.xml中定的包abstract 表示当前包为抽象包; 抽象包中不能有action的定义,否则运行时期报错,abstract=true  只有当当前的包被其他包继承时候才用!如:    <package name="basePackage" extends="struts-default" abstract="true"></package>    <package name="user" extends="basePackage">namespace   名称空间,默认为"/"    作为路径的一部分    访问路径=  http://localhost:8080/项目/名称空间/ActionName    action   配置请求路径与Action类的映射关系    name  请求路径名称    class 请求处理的aciton类的全名    method 请求处理方法           result        name  action处理方法返回值         type  跳转的结果类型        标签体中指定跳转的页面

6.在index.jsp中添加连接,测试

<a href="${pageContext.request.contextPath}/hello">第一次使用struts2</a>注:hello 是strurs.xml中的action中的name的值

部署项目到tomcat,run起来。控制台就会输出‘Hello Struts’。


struts-default.xml, 详解

  1. 目录:struts2-core-2.3.4.1.jar/ struts-default.xml
  2. bean节点指定struts在运行的时候创建的对象类型
  3. 指定struts-default包 【用户写的package(struts.xml)一样要继承此包 】package struts-default 包中定义了:
a.  跳转的结果类型    dispatcher    转发,不指定默认为转发    redirect       重定向    redirectAction  重定向到action资源    stream        (文件下载的时候用)b. 定义了所有的拦截器    定义了32个拦截器!    为了拦截器引用方便,可以通过定义栈的方式引用拦截器,    此时如果引用了栈,栈中的拦截器都会被引用!    defaultStack 默认的栈,其中定义默认要执行的18个拦截器!c. 默认执行的拦截器栈、默认执行的action    <default-interceptor-ref name="defaultStack"/>    <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
原创粉丝点击