Struts2
来源:互联网 发布:vb 颜色代码 编辑:程序博客网 时间:2024/04/28 08:36
三大框架怎么能落下Struts2呢?Struts2明确了页面设计人员、程序设计人员以及架构设计人员之间的分工。
它试图在不同的角度上提供网页设计人员、应用程序设计人员、架构设计人员解决方案,让不同技术的人员可以彼此合作又不互相干扰。从架构设计人员的角度来看,他只需做出一些配置与定义,定义后端bean与前端页面的关系。从网页设计人员的角度来看,Struts提供了一套像是新版本的HTML标签,但它不是静态的,而是动态的,可以与后端的动态程序结合,但网页设计人员不需要理会后端的动态部份。从应用程序设计人员的角度来看,它只需要按架构师设计人员的定义,完成后端bean的实现即可。3个角色的知识领域原则上可以互不干扰,根据您的角色,您只要了解其中一个知识领域,就可以运用Struts,其它角色的知识领域您可以不用了解太多细节。
客户端提起一个HttpServletRequest请求,这个请求被提交到一些列的过滤器,由过滤器决定是否要调用某个action来处理这个请求,如果需要过滤器就会把这个请求提交给ActionProxy,ActionProxy通过struts.xml询问框架的配置文件,找到需要调用的Action类.ActionProxy创建一个ActionInvocation的实例,同时ActionInvocation通过代理模式调用Action。但在调用之前ActionInvocation会根据配置加载Action相关的所有Interceptor。
Struts2通过setter和getter的方式实现和页面的数据交换,客户输入的信息先是传给actionServlet,然后由struts的servlet引擎根据配置文件,调用相应的actionBean,再通过配置文件将返回值返回给前端。
Struts2的实现过程:
1、添加jar到lib
2.web.xml,配置struts引擎。
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher </filter-class></filter><filter-mapping><filter-name>struts2</filter-name> <url-pattern>/*</url-pattern></filter-mapping> <display-name>Struts 2 Fileupload</display-name> <filter> <filter-name>struts-cleanup</filter-name> <filter-class> org.apache.struts2.dispatcher.ActionContextCleanUp </filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list > <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
3.添加struts.xml到src根目录,在struts.xml文件中添加一个actionbean
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- Struts 2的Action必须放在指定的包空间下定义 --> <package name="demo_struts2" extends="struts-default" > <!-- 定义login的Action,该Action的实现类为demo.UserLoginAction类 --> <action name ="fileUpload" class ="com.leec.demo_strus2.action.FileUploadAction"> <interceptor-ref name ="fileUploadStack"> <param name ="allowedTypes"> image/bmp,image/png,image/gif,image/jpeg </param > </interceptor-ref> <interceptor-ref name ="defaultStack"/> <result name ="success"> /ShowUpload.jsp </result> <result name ="input"> /FileUpload.jsp </result> </action > <action name="UserLogin" class="com.leec.demo_strus2.action.UserAction" method="login" ><!-- 定义处理结果和资源之间映射关系。 --><result name="error">/error.jsp</result><result name="success">/query.jsp</result><result name="input">/index.jsp</result></action> <!-- 查询全部 --> <action name="User_query" class="com.leec.demo_strus2.action.UserAction" method="query"><result name="success" >query.jsp</result></action><!-- 增 --><action name="User_regist" class="com.leec.demo_strus2.action.UserAction" method="regist"><!-- 定义处理结果和资源之间映射关系。 --><result name="error">/regist_error.jsp</result><result name="success">/query.jsp</result><result name="input">/add.jsp</result></action><!-- 删 --><action name="User_delete" class="com.leec.demo_strus2.action.UserAction" method="delete"><!-- 定义处理结果和资源之间映射关系。 --><result name="success">/query.jsp</result><result name="input">/query.jsp</result></action><!-- 改 --><action name="User_change" class="com.leec.demo_strus2.action.UserAction" method="change"><!-- 定义处理结果和资源之间映射关系。 --><result name="success">/query.jsp</result><result name="input">/change.jsp</result></action><action name="User_change1" class="com.leec.demo_strus2.action.UserAction" method="change1"><!-- 定义处理结果和资源之间映射关系。 --><result name="input">/change.jsp</result></action> </package> </struts>
- Struts2
- struts2
- struts2
- Struts2
- struts2
- struts2
- Struts2
- struts2
- struts2
- struts2
- Struts2
- Struts2
- Struts2
- struts2
- struts2
- STRUTS2
- Struts2
- Struts2
- 数学专项number_theory:UVa 10515
- 1086 简单数字打印
- 【Android】Android 开机广播的使用
- 黑马程序员-java面向对象3
- 设计模式学习网址
- Struts2
- 1087 字符串输入输出(1)
- Hibernate的基本知识(1)
- 虚拟内存不足
- android 定位:简单基站定位程序
- 信任、可信、信誉的区别
- android判断phonegap是否联网动态加载 super.loadUrl网址
- Linux一个多线程的面试题
- 解决Mac上禁止Apache开机启动的问题