Struts2学习入门以及工作原理

Struts

Struts作为MVC2的Web框架,自推出以来不断受到开发者的追捧,得到广泛的应用。作为成功的Web框架,Struts自然拥有着众多的优点:

  • MVC 2模型的使用
  • 功能齐全的标志库(Tag Library)
  • 开放源代码

但是,所谓“金无赤金,人无完人”,Struts自身也有不少的缺点

  • 需要编写的代码过多,容易引起“类爆炸”
  • 单元测试困难

这些缺点随着Web的发展越来越明显。这就促生了Struts 2.0,它的诞生能很好的解决上述问题。 好啦,废话就不多说了,现在就让我们在深入剖析一下struts的工作原理!

1. 什么是Struts2核心功能
(1)允许POJO(Plain Old Java Objects)对象 作为Action
(2)Action的execute 方法不再与Servlet API耦合,更易测试
(3)支持更多视图技术(JSP、FreeMarker、Velocity)
(4)基于Spring AOP思想的拦截器机制,更易扩展
(5)更强大、更易用输入校验功能

struts工作原理图

                                                                                                    

1.用户发送一个HttpServletRequest请求
2.请求会经过一系列的过滤器来传递
3.调用filterdispatcher,询问actionMapper是否需要调用某个action,如果需要就把请求转交给actionproxy
4.actionproxy会根据配置文件struts.xml文件找到具体的action
5.actionproxy会在actionivocation的前后,调用action有关的拦截器interceptor
6.action执行完,根据配置文件struts.xml找到具体的返回结果
7.最后,httpServletreponse响应通过web.xml文件中配置的过滤器返回

2.从MVC角度理解struts框架
1.filterDispatcher—控制层:
负责根据用户提交的URL和struts.xml中的配置,来选择合适的动作action,让这个action来处理用户的请求

2.Action—模型层:
负责把用户请求中的参数组装成合适 的数据模型,并调用相应的业务逻辑进行真正的处理,然后产生一个视图展示所需要的数据

3.Result—视图层:
视图层主要与用户进行交互,将控制层的数据以合适的形式展示给用户

 * 一、后台子控制器获取jsp所传递的参数的几种形式
 *  1、implements ModelDriven<Cal>
 *  2、通过set/get获取jsp页面的值
 *  3、通过对象导航的方式获取jsp页面的值
 *  
 * 二、后台子控制器向jsp传递结果的几种形式
 *  1、通过传统的作用域传值(与j2ee容器进行传值)
 *      就是需要获取到四大作用域即可
 *  2、通过值栈进行传值
 *      只需要在子控制器提供set、get方法,即可实现传值功能(calAction)

2、Struts1 与 Struts2的关系:
两者语法完全不相同。Struts2是基于WebWork2框架开发的,只是应用了Struts1的原理和模式,可以将Struts2看作是换了品牌的WebWork2

域对象: page    request    session   application

3、Struts2的下载和安装
http://struts.apache.org/download.cgi 去下载Struts2 最新版

  • struts2目录结构

    apps 该文件夹包含了基于struts2 的示例应用,这些示例应用对于学习者是非常有用的
    docs 该文件夹下包含了struts2 相关文档,包括struts2 快速入门、struts2的文档以及API文档等
    lib 该文件夹下包含了Struts2框架和核心类库,以及struts2第三方插件类库
    src 该文件夹下包含了Struts2框架的全部源代码
    开发时没必要将lib目录下jar文件全部复制到项目中

  • Struts运行必要jar包

struts2-core-2.3.1.1.jar:Struts 2框架的核心类库
xwork-core-2.3.1.1.jar:Command模式框架,WebWork和Struts2都基于xwork
ognl-3.1.15.jar:对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性
freemarker-2.3.26.jar:Struts 2的UI标签的模板使用FreeMarker编写
commons-logging-1.1.x.jar:ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
commons-fileupload-1.3.3.jar: 文件上传组件,2.1.6版本后需要加入此文件
commons-io-2.5.jar:传文件依赖的jar包
commons-lang3-3.6.jar:对java.lang包的增强
开发中为了方便导入,可以使用app/struts2-blank.war 携带jar包

4、Struts2的环境搭建:
1.导入工程jar包
2.配置Struts2核心过滤器(web.xml)
3.准备Struts2的配置文件(Struts.xml)      可能配置文件无提示,原因是缺少了对应的约束文件,可自行设置(Struts2下载文件中有)

注意:配置文件时引入dtd可能会出现不生效,无提示等问题,我做了详细的解决步骤,步骤如下:

打开Window------->preferences------->搜索xml-------->找到XML Catalog------->add------->File System找到根目录下的dtd文件

然后在Key type中选中URL------>Key里面填写http://struts.apache.org/dtds/struts-2.5.dtd(这里你dtd什么版本就填写什么版本)路径------>然后点击OK同步就好了

5、配置web.xml

打开web.xml,修改配置参数,修改后的具体配置如下。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>1009_struts_01</display-name>
  <filter>
  	<filter-name>struts</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

配置web.xml的<filter - class>中的列名  Ctrl+Shift+t  搜索strutsprepareAndExecuteFilter就可以获取列名了

6、配置struts.xml

首先我们在src目录下建立文件夹专门放struts.xml等一些文件,当然你也可以直接在src目录下建立,为了好区分,我这建立文件夹

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<include file="struts-default.xml"></include>
	<include file="struts-base.xml"></include>
	<include file="struts-sy.xml"></include>
</struts>

7、编写Action处理访问Struts2框架请求

package com.zking.one.web;

public class helloAction {

	public String execute() {
		System.out.println("hello struts");
		return "success";
	}
}

8、 编写JSP页面
helloword.jsp (发起请求页面)

9、部署运行
在Tomcat中运行该项目,然后打开浏览器,在地址栏中输入:http://localhost:8080/1009_struts_01/demo1.jsp
效果就会出来了!

点击helloword就会进入成功回调secess页面     就会弹出跳转成功!

好了,我的struts介绍就到这里了,希望能够帮助到你们!

猜你喜欢

转载自blog.csdn.net/cms18374672699/article/details/83004921