Struts

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


Struts_第1张图片


优点:

1、编码简单

2、适合小型项目

 

缺点:

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

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


Model2


Struts_第2张图片

 

优点:

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

2、可扩展性强

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


缺点:

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


对比


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


Struts1


概念


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


Struts1实现MVC的模型图


         Struts_第3张图片


各部分的职责


虽然说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下

如图所示:

         Struts_第4张图片

2、编写代码


web.xml

[html] view plain copy print?在CODE上查看代码片
  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.     
  11.   <!-- 标准 ActionServlet 配置文件-->  
  12.   <servlet>  
  13.     <servlet-name>action</servlet-name>  
  14.     <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>  
  15.     <init-param>  
  16.       <param-name>config</param-name>  
  17.       <param-value>/WEB-INF/struts-config.xml</param-value>  
  18.     </init-param>  
  19.     <init-param>  
  20.       <param-name>debug</param-name>  
  21.       <param-value>2</param-value>  
  22.     </init-param>  
  23.     <init-param>  
  24.       <param-name>detail</param-name>  
  25.       <param-value>2</param-value>  
  26.     </init-param>  
  27.     <load-on-startup>2</load-on-startup>  
  28.   </servlet>  
  29.   
  30.   
  31.   <!-- 标准 ActionServlet Mapping配置信息 -->  
  32.   <servlet-mapping>  
  33.     <servlet-name>action</servlet-name>  
  34.     <url-pattern>*.do</url-pattern>  
  35.   </servlet-mapping>  
  36.     
  37. </web-app>  


struts-config.xml

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

你可能感兴趣的:(Struts)