struts1.2 和2的区别(初学)

一:首先从视图层开始
1.struts1:jsp使用
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
以上三个是struts1通用标签
<%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested"%
>struts1的上传下载文件标签
2.struts2:jsp使用
<%@ taglib prefix="s" uri="/struts-tags"%>属性就不在介绍

二:从视图层到控制层(封装属性层)
1.struts1:使用actionForm自动封装
前提是视图层所用到的属性和actionForm中的属性名称一致(系统在加载视图层时时会自动加载actionForm,进行验证),验证通过会自动进行封装
2.struts2:直接使用属性get、set方法对属性进行封装,由于不用关联actionForm所以表现出struts2的解耦性

三:控制层(action)
1:struts1:继承action(普通只带execute方法),继承DispatchAction(拥有不同名称的方法),继承ValidateAction(验证方法)等等根据情况选择。
action中带有public ActionForward execute(ActionMapping mapping,ctionForm form,HttpServletRequest request, HttpServletResponse response) {}一系列的上下文参数
返回的视图层为(ActionMapping )对象,所有属性通过request.setAttribute("name","value");来传递
2:struts2:继承action(只拥有简单的execute方法),继承自actionSupport(此父类包(DispatchAction,ValidateAction)的方法)
为了保证struts2的解耦性,struts2中直接声明方法public String execute(){}返回string对象,所有对象也由内部直接传递给了jsp不用再request.setAttribute("name","value");

四:web.xml配置改变
1:struts1:需要声明<servlet><servlet-name>action</servlet-ame>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param><param-name>config</param-name>
<param-value>/WEB-INF/config/struts-config.xml</param-value>  
</init-param></servlet>struts配置文件
2:struts2:不用声明struts配置文件,但要声明<filter><filter-name>struts2
</filter-name><filter-class> org.apache.struts2.dispatcher.FilterDispatcher
</filter-class></filter>struts核心过滤器(自动加载struts配置文件)

五:struts配置文件
1:struts1:struts-config.xml
此配置文件中包含actionForm,actionMapping等等声明
2:struts2:struts.xml
具体配置略

个人感觉struts2相比较struts1简化了许多代码,减少了代码的重复性,不过原理稍微难以理解,还望各位大哥大姐多多指教

你可能感兴趣的:(apache,jsp,bean,xml,struts)