Struts是基于MVC的框架,它进一步的对MVC进行了封装。

MVC

概念

MVC全名是Model View Controller,是模型(model)—视图(view)—控制器(controller)的缩写,知道这么多就够了。

大家都知道SUN公司对于MVC模式先后推出的一种规范,第一种是JSP
Model1,第二种则是JSP Model2;Model1就是jsp + javabean,Model2就是jsp + servlet +
javabean两种模式,前者是纯JSP,后者是简单的MVC。我们通过两个时序图来对比一下Model1和Model2:

Model1

优点:

1、编码简单

2、适合小型项目

缺点:

1、显示层与业务逻辑混在一起

2、jsp的职责不单一,职责过重,不便于维护

Model2

优点:

1、分层清晰,职责清楚,比较适合于大型项目架构

2、可扩展性强

3、实现了业务逻辑和显示分离,降低系统的耦合度

缺点:

1、增加了大量编写代码的工作量

对比

Model1在一定程序上实现了MVC,即JSP是控制层与表示层合二为一了,这样的效果显然不如将控制层单独划分出来的好。而Model2则是将控制层
(sevlet)单独的划分出来了,专门负责业务流程的控制,接受页面的请求,创建所需的javabean实例,并将处理后的数据再返回给JSP,渲染页
面,这样分层清晰,可扩展性强,降低系统的耦合度。

Struts1

概念

说概念真谈不上,Struts实质上就是采用JavaServlet/JSP技术,在Model2的基础上实现的一个MVC框架。

Struts1实现MVC的模型图

各部分的职责

虽然说Struts不难,但对于初学者而言,真正的弄明白Struts也是一件很简单的事,我们介绍一下几个关键点的职责,以便对struts的原理有更进一步的认识。

ActionServlet,前端控制器

1、根据相应的规则截取Http请求的URL

2、将Http请求分发到相应的Action处理

ActionForm,相当于实体

1、收集表单数据,将表单数据转换成相应的数据类型

Action,业务层控制器

1、 取得表单数据
2、调用业务逻辑
3、返回转向信息

我们再根据登录实例,对比上面的模型图,进一步理解一下Struts的基本原理,最后做一下总结。

登录实例

1、配置Struts

*拷贝struts相关的jar到WEB-INF/lib下
*在web.xml文件中配置ActionServlet
*提供struts-config.xml文件,需要放到WEB-INF下

如图所示:

2、编写代码

web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7. <welcome-file-list>
  8. <welcome-file>index.jsp</welcome-file>
  9. </welcome-file-list>
  10. <!-- 标准 ActionServlet 配置文件-->
  11. <servlet>
  12. <servlet-name>action</servlet-name>
  13. <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  14. <init-param>
  15. <param-name>config</param-name>
  16. <param-value>/WEB-INF/struts-config.xml</param-value>
  17. </init-param>
  18. <init-param>
  19. <param-name>debug</param-name>
  20. <param-value>2</param-value>
  21. </init-param>
  22. <init-param>
  23. <param-name>detail</param-name>
  24. <param-value>2</param-value>
  25. </init-param>
  26. <load-on-startup>2</load-on-startup>
  27. </servlet>
  28. <!-- 标准 ActionServlet Mapping配置信息 -->
  29. <servlet-mapping>
  30. <servlet-name>action</servlet-name>
  31. <url-pattern>*.do</url-pattern>
  32. </servlet-mapping>
  33. </web-app>

struts-config.xml

    1. <?xml version="1.0" encoding="ISO-8859-1" ?>
    2. <!DOCTYPE struts-config PUBLIC
    3. "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
    4. "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
    5. <struts-config>
    6. <form-beans>
    7. <form-bean name="loginForm" type="com.liang.struts.LoginActionForm"></form-bean>
    8. </form-beans>
    9. <action-mappings>
    10. <action path="/login"
    11. type="com.liang.struts.LoginAction"
    12. name="loginForm"
    13. scope="request"
    14. >
    15. <forward name="success" path="/login_success.jsp"></forward>
    16. <forward name="error" path="/login_error.jsp"></forward>
    17. </action>
    18. </action-mappings>
    19. </struts-config>

Struts的更多相关文章

  1. 菜鸟学Struts2——Struts工作原理

    在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...

  2. Struts的拦截器

    Struts的拦截器 1.什么是拦截器 Struts的拦截器和Servlet过滤器类似,在执行Action的execute方法之前,Struts会首先执行Struts.xml中引用的拦截器,在执行完所 ...

  3. Struts框架的核心业务

    Struts的核心业务 Struts核心业务有很多,这里主要介绍了比较简单一些的: 请求数据的处理,和数据自动封装,类型自动转换 1.Struts中数据处理 1.1.方式1:直接过去servletap ...

  4. Struts的文件上传下载

    Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...

  5. 配置hibernate,Struts。文件

    hibernate文件配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernat ...

  6. hibernate与Struts框架结合编写简单针对修改练习

    失败页面fail.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  7. 3. 解析 struts.xml 文件

    1. struts.xml 文件基本配置: 主要放在资源路径下,配置 sturts2相关的 Action , 拦截器等配置 <struts> <!-- 设置常量 --> < ...

  8. Struts+Spring+Hibernate项目的启动线程

    在Java Web项目中,经常要在项目开始运行时启动一个线程,每隔一定的时间就运行一定的代码,比如扫描数据库的变化等等.要实现这个功能,可以现在web.xml文件中定义一个Listener,然后在这个 ...

  9. Struts 原理

    今天开始接触公司的框架,叫YNA,三个字母应该是雅马哈的缩写,这个框架听公司前辈说功能很强大,但实际上我看不懂.哈哈...... 其中整合了SSH框架,接下来我说下Struts的一些原理 其实这张图就 ...

  10. axis2+struts拦截地址冲突问题

    axis2和struts在整合过程中,struts会把axis的地址也拦截了,默认当成一个action处理, 会因为找不到action而报错: <!-- struts配置 --> < ...

随机推荐

  1. js观察者模式学习

    function Events(){ var obj = {}; this.on=function(key,fn){ var stack; stack = obj[key] || (obj[key] ...

  2. 相关子查询【SQL Server】

    查询book表中大于该类图书价格平均值的图书信息 先将第一条记录的类编号的值为2代入子查询中,子查询为 select avg(price) from book b where b.id=2 则得到类编 ...

  3. [锋利的JQ]-超链接提示效果

    关键知识点: 1.事件对象:当事件一旦被触发,事件对象便会创立.事件对象只能作用于该事件的事件处理程序. 2.认识了mousemove事件了连续触发执行的特性. 代码: HTML: <div c ...

  4. 在Gridview如何进行每行单元格比较

    有在论坛上看到一个问题,就是在Gridview控件中,需要对几个列的数值进行比较,原问题如下: 先在数据库中准备数据: CREATE TABLE [dbo].[RecordTime] ( Id ,) ...

  5. 【要什么自行车】ASP.NET MVC4笔记03:调用编辑器 kindeditor

    参考:http://www.cnblogs.com/guzhongx/p/kindeditor.html 1.下载kindeditor,存放于Content文件夹下 <script src=&q ...

  6. .net断点续传的原理

    在了解HTTP断点续传的原理之前,先来说说HTTP协议,HTTP协议是一种基于tcp的简单协议,分为请求和回复两种.请求协议是由客户机(浏览器)向服务器(WEB SERVER)提交请求时发送报文的协议 ...

  7. 2016弱校联盟十一专场10.5---As Easy As Possible(倍增)

    题目链接 https://acm.bnu.edu.cn/v3/contest_show.php?cid=8506#problem/A problem description As we know, t ...

  8. 2015暑假多校联合---Problem Killer(暴力)

    原题链接 Problem Description You are a "Problem Killer", you want to solve many problems. Now ...

  9. 【Effective Java】10、java注解使用

    package cn.xf.cp.ch02.item35; import java.lang.annotation.ElementType; import java.lang.annotation.R ...

  10. GJM : 基于Actor模式的c#网络游戏服务器的实现和Unity游戏客户端的连接 [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...