Struts--项目创建流程
- 格式:doc
- 大小:227.00 KB
- 文档页数:8
struts1开发学习笔记使用一个简单的例子记录struts1开发过程。
0、 描述主要功能描述:index 界面上只有两个超链接,分别可以打开录入产品界面和显示产品列表界面。
newProduct.jsp 是录入的界面,searchProduct.jsp 是查询列表的界面。
ProductAction.java 是处理逻辑的action简单描述流程图:1、 构建环境在Myeclipse 中,新建一个工程StrutsTest ,选择该工程,右键Myeclipse->add srutscapapibality ,弹出界面,选择struts1.2支持。
如下图所示:添加完struts 支持后,lib 目录下会增添struts 的jar 包、增添struts 的配置文件:/WEB-INF/struts-config.xml 、同时在web.xml 中增添了struts 的配置。
2、 代码编写2)创建工具类Util.java,从数据库连接池中获得连接。
需要两个步骤第一步:在WebRoot/META-INF/下新建一个context文件,通过jndi方式配置数据源,第二步:在util类中读取配置获得连接,util.java如下:3)创建工具类EncodingFilter.java,自定义过滤器,并在web.xml中配置,参考web.xml配置中内容。
EncodingFilter.java的内容如下:4)修改web.xml,指定首页为index.jsp。
文件内容如下:最后定义了一个fileld 的过滤器,是用来过滤字符编码的,后面会提到。
6)index.jsp中提到productAction.action?method=viewAddForm,需要在在配置文件中配置了action的实现类,以及作为上传数据时用来保存数据的form:productForm10)searchProduct.jsp是查询结果界面,代码如下:http://localhost:8080/StrutsTest即可访问。
Struct2、Hibernate3、Spring3框架搭建实战采⽤⽬前最新的struts-2.3.1.2、hibernate3.6.10.Final、spring-framework-3.1.1.RELEASE开发包,以及eclipse-jee-indigo-SR2-win32、apache-tomcat-7.0.27服务器、JDK6和mysql5做开发环境,参考了前辈的⼀篇相关⽂章,改正了其中的错误和疏漏,克服了公司分配的“新”机器每⼩时⾃动重启三次的困难,终于把环境给搭好了。
整个过程中遵循的⼀个原则是,避免引⼊⽤不到的jar包,以求搭建⼀个最⼩的SSH 运⾏环境。
⾸先创建⼀个Dynamic web project 输⼊任意名字如SSHBase。
第⼀步:加载Spring环境我们需要引⼊的包有:org.springframework.asm-3.1.1.RELEASE.jarorg.springframework.beans-3.1.1.RELEASE.jarorg.springframework.context-3.1.1.RELEASE.jarorg.springframework.core-3.1.1.RELEASE.jarorg.springframework.expression-3.1.1.RELEASE.jarorg.springframework.jdbc-3.1.1.RELEASE.jarorg.springframework.web-3.1.1.RELEASE.jarorg.springframework.orm-3.1.1.RELEASE.jar由于spring默认开启了⽇志,还需要加⼊commons-logging的jar包,否则会报错。
建议不要⼀次性加⼊应该先加最核⼼的运⾏代码看缺少什么加什么,这样就不会加多余的包进来了,spring3已经把包按功能分开,不像以前⼀个包,这样更灵活,只要运⾏我们需要的功能,⽽没⽤到的就不⽤在硬性的添加进来。
ABCD1、栈和队列的共同特点是()。
CA.都是先进先出B.都是先进后出C.只允许在端点处插入和删除D.没有共同点2、在一个长度为n的顺序表中,在第i个元素之前插入一个新元素时,需要向后移动()个元素。
A.n-iB.n-i+1C.n-i-1D.i B3、在一棵二叉树中,度为0的节点个数是n0,度为2的节点个数是n2,则有n0=____。
CA.n2-1B.n2C.n2+1D.n2+21、以下是线性表的数据结构是()。
ABCDA.数组B.单链表C.双链表D.循环链表2、以下()是常用的哈希函数构造方法。
ABCDA.直接寻址法B.除留余数法C.随机数法D.平方取中法1、()最主要的目的是将文件的内容与显示分隔开来。
BA.HTMLB.CSSC.JavaScriptD.MySql2、()是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件AA. activityB.serviceC.content providerD.以上都不是3、设计规范应该被()使用。
AA.系统所有产品开发人员B.仅产品经理C.仅UE工程师需求人员D.仅UI工程师1、以下哪些是语义化标签?CDA.divB.spanC.articleD.header2、CSS的定位常用属性有以下几个值()。
ABCDA.staticB.relativeC.fixedD.aBsolute1、SQL语句中删除一个表中记录,使用的关键字是()。
CA.selectB.insertC.deleteD.update2、C#中导入某一命名空间的关键字是()。
AingeC.importD.include3、以下哪个是SQL中用来统计数量的函数()。
AA.count()B.max()C.min()D.now()1、以下哪些是Scala语言的特点()。
ABCDA.Scala是面向对象的B.Scala是函数式语言C.Scala是可扩展的D.Scala是静态类型的2、下面属于Golang的关键字的是()。
Struts2的工作流程及配置文件--- ---Struts2.0的流程图从图中看到Struts2的工作流程如下:1.服务器接收到的请求首先经过一组过滤器链(实际中的其他过滤器可能还包括诸如Spring 的字符过滤器CharactorEncodingFilter、V elocity的过滤器等,一般FilterDispatcher位于过滤器的最后一个执行),过滤器链按照你在web.xml中的配置顺序在接收客户请求时顺序执行,在向客户发送响应时反序执行,Struts2的核心FilterDispatcher在web.xml中的配置如下:<filter><filter-name>setCharactor</filter-name><!-- 配置字符过滤--><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter><filter-name>struts2</filter-name><!-- 配置Struts2过滤器--><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter><filter-mapping><filter-name>setCharactor</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>注意:如果你使用的是W ebLogic6.1作为应用服务器,需要使用FilterDispatcherCompatW eblogic61替代FilterDispatcher。
1.什么是Struts1基于MVC的轻量级,WEB应用框架2.struts1工作原理a> 初始化: struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象.b> 发送请求: 用户提交表单或通过URL向WEB服务器提供请求,请求的数据用HTTP协议传给WEB服务器.c> form填充: Struts的总控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员变量中d> 派发请求: 控制器根据配置信息对象ActionConfig将请求派发到具体的Action,对应的formBean一并传给Action的excute()方法e> 处理业务: Action一般只包含一个excute()方法,它负责执行相应的业务逻辑(调用其它的业务模块)完毕后返回一个ActionForward对象.服务器通过ActionForward对象进行转发工作f> 返回响应: Action将业务处理的不同结果返回一个目标相应对象给总控制器g> 查找响应: 总控制器根据Action处理业务返回的目标响应对象,找到对应的资源对象,一般情况下为jsp页面h> 响应用户: 目标响应对象将结果传递给资源对象,将结果展现给用户struts1原理图:3.开发指南准备工作:1>到/下载struts的安装文件struts-1.3.10-all.zip2>解压struts-1.3.10-all.zip3>创建一个web project,并将上步中解压的lib文件下的jar包引进去4>配置web文件5>新建struts-config.xml6>创建数据库(mysql4. 项目开发4.1 页面制作index.jsp4.2 在struts-config.xml中需要修改4.3 创建com.javakc.struts1.action.StudentAction 业务类4.4 创建com.javakc.struts1.action.StudentForm类1)继承org.apache.struts.action.ActionForm类2)属性名要和表单中的属性名一一对应,并生成其对应的getter、setter方法4.5 在StudentAction中处理提交的请求1) 通过form表单或超链接可以将用户的请求提交到服务器进行处理,在系统架构中,服务器处理用户请求的场地就是StudentAction类的execute方法.4.6 在student_info.jsp中展示数据。
struts2核心工作流程与原理做为一名技术人员,听到太多关于.net和java的比较的话题。
我想对那些技术人员说,请先了解一下什么是java(或者.net)吧,其实你根本不了解。
这是Struts2官方站点提供的Struts 2 的整体结构。
一个请求在Struts2框架中的处理大概分为以下几个步骤1.客户端提起一个(HttpServletRequest)请求,如上文在浏览器中输入”http://localhost:8080/TestMvc/add.action”就是提起一个(HttpServletRequest)请求。
2.请求被提交到一系列(主要是三层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、 FilterDispatcher)。
注意这里是有顺序的,先ActionContextCleanUp,再其他过滤器(SiteMesh等)、最后到 FilterDispatcher。
3.FilterDispatcher是控制器的核心,就是mvc中c控制层的核心。
下面粗略的分析下我理解的FilterDispatcher工作流程和原理:FilterDispatcher进行初始化并启用核心doFilter其代码如下:public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain ) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) res;ServletContext servletContext = filterConfig.getServletContext();// 在这里处理了HttpServletRequest和HttpServletResponse。
/topic/128973struts2表单标签1、struts资源文件中文解决方法在命令行中输入以下命令native2ascii -encoding gb2312 ApplicationResources.properties ApplicationResourcesgbk.properties第一个文件为资源文件,第二个为新生成的文件,将新生成的文件拷入工程就可以了2、开发struts2流程1.创建web工程2.拷贝commons-fileupload-1.2.1.jar,commons-logging-1.0.4.jar,freemarker-2.3.13.jar,ognl-2.6.11.jar,struts2-core-2.1.6.jar,xwork-2.1.2.jar,放入web-inf--lib中3.在web.xml文件中添加struts2的核心Filter,过滤客户端发送过来的请求,代码如下<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>org.apache.struts2.dispatcher.FilterDispatcher为struts2中提供的一个控制器4.创建struts.xml文件,放在src目录下.代码如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="strutsqs" extends="struts-default"></package></struts>5.在src目录下创建一个类,创建几个属性及对应的get,set方法6.创建public String execute() throws Exception方法,7.在struts.xml文件中添加如下代码:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="strutsqs" extends="struts-default"><action name="login" class="ers.action.LoginAction"><result name="success">/Main.jsp</result><result name="failed">/Login.jsp</result></action></package></struts>3、创建拦截器:1.创建类继承AbstractInterceptor,覆盖intercept方法,代码如下public String intercept(ActionInvocation invocation) throws Exception {LoginAction action=(LoginAction)invocation.getAction();String result=invocation.invoke();return null;}2.在struts.xml文件中配置如下<package name="strutsqs" extends="struts-default"><interceptors><interceptor name="myInterceptor" class="ers.interceptor.LoginInterceptor"> <param name="name">简单拦截器</param></interceptor></interceptors><action name="login" class="ers.action.LoginAction"><result name="success">/Main.jsp</result><result name="failed">/Login.jsp</result><result name="input">/Login.jsp</result><interceptor-ref name="myInterceptor"></interceptor-ref></action></package>也可以创建拦截器栈<interceptors><interceptor name="myinterceptor1"class="com.haitian.bbs.interceptor.MyInterceptor"></interceptor> <interceptor name="myinterceptor2"class="com.haitian.bbs.interceptor.MyInterceptor2"></interceptor> <interceptor-stack name="stack1"><interceptor-ref name="myinterceptor2"></interceptor-ref><interceptor-ref name="myinterceptor1"></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref></interceptor-stack></interceptors>4.标签中引用资源文件内容<s:textfield name="age" key="regist.age" value="%{getText('regist.password')}"></s:textfield><s:select list=”#{‘1’:getText(‘sex.man’),’0’:getText(‘sex.women’)}”<s:text name=”bel”/>5.创建资源文件在src下创建messageResource_zh_CN.properties文件在src下创建struts.properties文件,添加struts.custom.i18n.resources=messageResource_zh_CN 6.Action中访问servlet APIActionContext ctx=ActionContext.getContext();ctx.getApplication()获得application对象ctx.put(“”,””);//相当于request.setAttribute(“”,””);ctx.getSession()//获得session对象get(Object key);//类似于调用HttpServletRequest的getAttribute(String name);方法Map getApplication();返回一个Map对象,该对象模拟了应该的ServletContext实例Map getSession();返回一个Map对象,该Map对象模拟了HttmpSession实例Map getParameters();获取所有的请求参数,类似于调用HttpServletRequest对象的getParameterMap方法Void setSession(Map session);直接传入一个Map实例,将实例里的key-value对转换成session的属性名\属性值HttpServletRequest request=ServletActionContext.getRequest();7.Action访问资源文件Action 继承ActionSupport调用this.getText(“ername”);Jsp访问资源文件<s:text name=”bel”/>8.资源文件_各国代码资源文件命名格式:baseName_language_country.propertiesLocale[] localeList=Locale.getAvailableLocales();for(int i=0;i<localeList.length;i++){System.out.println(localeList[i].getDisplayCountry()+”=”+localeList[i].getCountry()+””+localeList[i ].getDisplayLanguage()+”=”+localeList[i].getLanguage());}9.将struts.xml分开在struts.xml中添加如下代码,将其它配置文件导入<struts><include file=”struts-part1.xml”/>..</struts>被包含的配置文件是标准的struts2配置文件,一样包含dtd 信息、strut2配置文件的根元素,此时struts.xml文件中不能再定义action10全局结果result<global-results><result name="">/te.jsp</result></global-results>11模型驱动1创建一个JavaBean,生成setter,getter方法2创建action类实现ModelDriven接口12.创建拦截器1创建类继承AbstractInterceptor,覆盖intercept(ActionInvocation invocation)方法2. ActionContext ac=arg0.getInvocationContext();Map session=ac.getSession();获得session对象Object obj=session.get(“CURRENTUSERBEAN”);//获得session中是否存在此对象If(obj==null)没有登陆过Return “login”;ElseReturn invocation.invoke();3.LoginAction la=(LoginAction)invocation.getAction();获得被拦截的Action 实例4.String result=invocation.invoke();调用execute方法,将拦截方法返回的字符串做为拦截器的返回值或者返回其它字符串,此字符串与struts.xml文件中的result标签中的结果对应。
一、发展历史及简介发展历史Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages、Servlet、标签库以及面向对象的技术水准。
Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。
这个框架之所以叫"Struts",是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑。
这也是一个解释Struts在开发Web应用程序中所扮演的角色的精彩描述。
当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。
同样,软件工程师使用Struts为业务应用的每一层提供支持。
它的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。
我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。
如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。
早期Smalltalk程序语言便采用了MVC(Model-View-Controller)模式(Patterns)以增加程序代码弹性,MVC模式将程序代码整理切割为三部分,Model部分是业务与应用领域(Business domain)相关逻辑、管理状态之对象,Controller部分接收来自View所输入的资料并与Model部分互动,struts业务流程控制(Flow Control)之处,View部分则负责展现资料、接收使用者输入资料。
在Java应用中,JFC/Swing、AWT、JSP皆是可用作View的技术规格,而JavaBean与Enterprise JavaBean规格则可用于Model程序代码,一旦应用程序以MVC模式加以适当的分割,Model部分程序代码可在不同使用者接口外观的应用程序中重复使用。
随着JSP与Servlet技术大量应用于以Web为基础的应用程序,Java开发人员群体认为应以较佳的模式以提升Web应用程序的可维护性与重复使用性。
白汉奇XML to PDF by RenderX XEP XSL-FO Formatter, visit us at /白汉奇版权 . 2009 白汉奇本作品在Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported 协议下发布,些协议中已经明确规定你的权利和义务,如果你对此协议不是很了解,可以从 Creative Commons网站上取得一份拷贝。
XML to PDF by RenderX XEP XSL-FO Formatter, visit us at /目录1. Stripes 框架简介.............................................................................. .. (1)1.1. 初识Stripes ........................................................................ .. (1)1.2. Stripes vs Struts 1 .............................................................................. . (1)1.3. Stripes vs Struts2 .............................................................................. (3)2. Stripes 快速入门.............................................................................. .. (4)2.1. 安装Sun JDK ............................................................................ (4)2.2. 使用Maven 创建项目.............................................................................. (4)2.2.1. 安装Maven .......................................................................... . (4)2.2.2. 创建Stripes 项目.............................................................................. .. (5)2.3. 使用NetBeans 创建项目.............................................................................. .. (5)2.4. 开始创建Stripes项目.............................................................................. . (9)2.5. Stripes的运行原理.............................................................................. (10)3. 创建ActionBean ..................................................................... (12)3.1. ActionBean 接口.............................................................................. (12)3.2. 处理请求事件.............................................................................. .. (13)3.3. URL 映射.............................................................................. .. (13)4. 输入控制.............................................................................. . (15)4.1. 处理表单.............................................................................. (15)4.2. 用户注册程序.............................................................................. .. (15)4.3. 添加required 约束 ............................................................................. (17)4.4. 其它输入控制.............................................................................. .. (18)4.5. 数据类型转换.............................................................................. .. (18)4.6. 自定义验证方法.............................................................................. .. (19)4.7. 使用嵌套验证.............................................................................. .. (20)4.8. 显示错误信息.............................................................................. .. (21)5. Resolution接口.............................................................................. (23)6. 防止重复提交.............................................................................. . (24)6.1. 使用RedirectResolution ............................................................. (24)6.1.1.FlashScope ..................................................................... (24)6.2. 使用验证码.............................................................................. (25)7. 页面显示.............................................................................. . (28)7.1. 多记录分页显示.............................................................................. .. (28)7.1.1. 使用Display Tag 处理分页 (28)7.1.2. 使用JMesa 进行分页处理 (33)7.2. 分步提交.............................................................................. (36)8. 文件上传.............................................................................. . (40)8.1. 单个文件上传.............................................................................. .. (40)8.2. 多文件上传.............................................................................. (42)9. 文件下载.............................................................................. . (44)10. 页面布局.............................................................................. (46)10.1. 示例.............................................................................. .. (46)10.2. 向layout模板文件传递参数 ............................................................................. . (47)10.3. 嵌套使用.............................................................................. . (48)11. 国际化和本地化.............................................................................. .. (50)11.1. 取得当前Locale ......................................................................... . (50)11.2. 选择字符编码.............................................................................. . (50)11.3. 查找资源信息.............................................................................. . (51)11.4. 示例.............................................................................. .. (51)11.5. 与JSTL共处.............................................................................. . (53)12. Ajax 技术.............................................................................. (54)12.1. 示例:即时检测账号的合法性............................................................................54iiiXML to PDF by RenderX XEP XSL-FO Formatter, visit us at /12.2. 示例:重新获取验证码.............................................................................. .. (55)13. 单元测试.............................................................................. (57)13.1. 使用TestNG 进行测试.............................................................................. . (57)13.2. 使用Stripes 测试API ............................................................................ .. (57)ivStripes快速入门XML to PDF by RenderX XEP XSL-FO Formatter, visit us at /第 1 章 Stripes 框架简介简单的介绍 Stripes 框架本章会对 Stripes 框架作一个简短的介绍。
一、安装jdk1.5二、在计算机上创建一个文件夹用于保存自己将来的工程代码,比如在D盘上创建一个文件夹并命名为myProject三、安装tomcat5.0四、设置环境变量(1)JA V A_HOME=jdk1.5的安装路径(例如jdk1.5安装在d:\jdk1.5则JA V A_HOME=D:\JDK1.5)(2)CATALINA_HOME=tomcat安装路径(例如,tomcat5安装在d:\tomcat5则CATALINA_HOME=D:\TOMCAT5)(3)CLASSPATH=.;(jdk1.5安装路径)\lib\tools.jar;(jdk1.5安装路径)\lib\dt.jar;(tomcat 安装路径)\common\lib\servlet-api.jar;(你的工程文件路径)注意:classpath中当前路径.一定得有,其次tomcat安装路径\common\lib\servlet-api.jar必须有,没有它jsp运行不了,具体设置时到这个文件夹中看一下,文件名有可能稍有不同,但文件名头几个字母一定是servlet,以你实际名称为准五、安装myeclipse六、启动MyEclipse,并利用它创建struts项目(1)设置tomcat在myeclipse菜单栏中选window菜单中的preferences命令后,在弹出的窗口中左侧有一个名为myeclipse选项,单击它展开,展开后再单击Application Server展开它,其中有一个tomcat项,展开它选中tomcat5.x,这时在右边窗口中单击enable单选按钮,然后将tomcat home directory和tomcat base directory分别设置成你的tomcat安装路径,例如d:\tomcat5,将tomcat temp directory设成tomcat安装路径\temp,设置完后点击ok按钮确定.(2)新建struts项目File✂new✂project✂web project创建一个项目,项目名随便起,例如起个名为strutsTest.创建完项目后添加struts框架包,右击项目名在弹出的菜单中选择myeclipse后单击Add Struts Capabilities,在弹出的窗口中单击struts1.2单选按钮(其它默认)后,点击完成按钮完成添加.(3)在tomcat中发布此项目右击项目名,在弹出的菜单中选择myeclipse后单击Add and Remove Project Deployments后,在弹出的窗口中的Project下拉列表框中选择你创建的项目名,然后单击Add按钮,在弹出的窗口中选择tomcat5后单击完成按钮回到上一个窗口,单击完成按钮.(4)创建一个action文件夹和一个java文件展开项目名(strutsTest),下面有一个名为com.yourcompany.struts的包名,右击它在弹出的菜单中选择new再选择folder,创建一个名为action的文件夹(都是小写字母)右击action文件夹在弹出菜单中选择new再选择file,在弹出的窗口中输入文件名StrutsTestAction.java(java是区分大小写的,一定注意),文件内容如下所示: package com.yourcompany.struts.action;import javax.servlet.http.*;import org.apache.struts.action.*;import org.apache.struts.actions.DispatchAction;import java.sql.*;public class StrutsTestAction extends DispatchAction{public ActionForward execute(ActionMapping mapping,ActionForm frm,HttpServletRequest req,HttpServletResponse res) throws Exception {return mapping.findForward("success");}}(5)创建两个jsp文件按照上面创建文件的方式,在项目名下的WebRoot文件夹下创建一个test.jsp文件,文件内容如下所示:<%@ page language="java" contentType="text/html;charset=GBK"%><%String path = request.getContextPath();%><html><head><title>测试</title><script language="javascript">function testStruts(){document.EAPForm.action ="<%=path%>/StrutsTestAction.do";document.EAPForm.submit();}</script></head><body><form name="EAPForm" id="EAPForm" method="post"action="/strutsTest/StrutsTestAction.do"><input type="hidden" name="method" id="method" value=""> <table><tr><td>用户名:</td><td><input type="text" name="userName"id="userName" value=""></td></tr><tr><td>密码:</td><td><input type="text" name="userPassWord"id="userPassWord" value=""></td></tr><tr><td><input type="button" name="aa" id="aa" value="提交" onclick="testStruts()"></td></tr></table></form></body></html>再创建一个名为success.jsp的文件,文件的内容如下所示:<%@ page language="java" contentType="text/html;charset=GBK"%><html><body>登录成功! <br></body></html>(6)修改strutsTest\WebRoot\WEB-INF\web.xml,内容如下所示(事实上这个文件暂时不用修改,但是记住以后真正做项目时需要修改,这个文件是配置web 应用的必需要配置的文件):<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance" version="2.4"xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd"><servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</se rvlet-class><init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value> </init-param><init-param><param-name>debug</param-name><param-value>3</param-value></init-param><init-param><param-name>detail</param-name><param-value>3</param-value></init-param><load-on-startup>0</load-on-startup></servlet><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>(7) 修改strutsTest\WebRoot\WEB-INF\struts-config.xml文件(这个文件是配置struts所必须配置的文件),文件内容如下所示:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN""/dtds/struts-config_1_2.dtd"><struts-config><data-sources /><form-beans /><global-exceptions /><global-forwards /><action-mappings><action type ="com.yourcompany.struts.action.StrutsTestAction"parameter="method" path="/StrutsTestAction" scope="request" ><forward name="success" path="/success.jsp"/> </action><message-resourcesparameter="com.yourcompany.struts.ApplicationResources" /> </struts-config>七、启动tomcat按照下图图示启动tomcat八、打开IE,在地址栏中输入http://localhost/strutsTest/test.jsp,如下图所示:点击提交按钮,如果出现success.jsp页面,即显示有登录成功字样的页面,表示你的struts已经配置好了。
struts框架详细介绍Struts是一个开源的Java Web应用程序开发框架,可以帮助开发者构建可扩展的、高性能的Web应用程序。
它遵循了Model-View-Controller(MVC)设计模式,通过将业务逻辑、表示逻辑和用户交互进行分离,使得应用程序更易于开发、测试和维护。
下面是关于Struts框架的详细介绍。
1.MVC设计模式:Struts采用了MVC设计模式,将应用程序的不同组成部分进行分离。
- Model层负责处理数据和业务逻辑。
在Struts中,开发者可以使用JavaBean、EJB、Hibernate等技术作为Model层的实现。
- View层负责展示数据和用户界面。
Struts提供了JSP(JavaServer Pages)作为主要的View技术,也可以使用Velocity、Freemarker等模板引擎。
- Controller层负责接收用户请求、处理业务逻辑以及将结果返回给View层。
Struts的Controller层使用ActionServlet来处理请求,它根据配置文件中的映射规则将请求转发给合适的Action类进行处理。
2.核心组件:Struts由以下几个核心组件组成:- ActionServlet:负责接收和处理来自客户端的请求,并根据配置文件中的映射规则将请求转发给合适的Action类进行处理。
- Action类:实现了业务逻辑的处理,接收请求和返回结果。
开发者需要继承Action类,并覆写其中的execute(方法来实现自定义的业务逻辑。
- ActionForm:用于封装请求参数并传递给Action类进行处理。
ActionForm可以与表单元素进行绑定,从而方便地获取和验证用户输入。
- ActionMapping:配置文件中的一项规则,用于将请求URL映射到具体的Action类和方法。
- ActionForward:配置文件中的一项规则,用于指定请求处理完成后需要跳转到的页面。
struts2环境搭建构建工具使用mavenIDE使用最新的eclipse(不是myeclipse)创建maven项目一定要选择war,war表示是动态Web项目。
设置jdk的版本创建完maven项目之后,目录结构如下:右键单击项目名称,选择“Properties”选择,单击【Remove】按钮,然后点击【】:最后结果为:设置编译级别编译级别应该设置为1.6:选择1.6,然后点击【Apply】,【OK】:设置project facets默认的是1.5,修改为1.6。
修改pom选择pom打开方式:在pom中添加如下内容:<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.kunlunsoft</groupId><artifactId>struts_ioc</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><properties><java.version>1.6</java.version><tomcat.version>7.0.26</tomcat.version><struts2.version>2.3.4.1</struts2.version> </properties><dependencies><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>${struts2.version}</version><exclusions><exclusion><artifactId>tools</artifactId><groupId>com.sun</groupId></exclusion></exclusions></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-json-plugin</artifactId><version>${struts2.version}</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.15</version><type>jar</type></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.5</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.6</source><target>1.6</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build></project>保存之后,右键点击项目,选择Maven|Update Project创建struts.xml web.xml创建一个beanpackage com.jn.bean;public class LoginUser{private int age;private String username;private String password;/***登录页面:<?xml version="1.0"encoding="UTF-8"?><%@page language="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%String path=request.getContextPath();String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %><%@taglib prefix="s"uri="/struts-tags"%><!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type"content="text/html;charset=UTF-8"/><title>login</title></head><body><center><h1>login platform</h1><s:form action="/login"method="post"><table><tr><td>username:</td><td><s:textfield name="ername"></s:textfield> </td></tr><tr><td>password:</td><td><s:textfield name="user.password"></s:textfield></td></tr> <tr><td>age:</td><td><s:textfield name="user.age"></s:textfield></td></tr><tr><td>isBoy:</td><td><s:textfield name="user.isBoy"></s:textfield></td></tr><tr><td colspan="2"><s:submit value="login"></s:submit></td></tr></table></s:form></center></body></html>响应登录的action如下package com.jn.action;import com.jn.bean.LoginUser;import com.opensymphony.xwork2.ActionSupport;public class LoginVerifyAction extends ActionSupport{private static final long serialVersionUID=-5532496750392156543L;private LoginUser user;@Overridepublic String execute()throws Exception{System.out.println("user information:");System.out.println("username:"+user.getUsername());System.out.println("password:"+user.getPassword());System.out.println("age:"+user.getAge());System.out.println("isBoy:"+user.isBoy());return super.execute();}public LoginUser getUser(){return user;}public void setUser(LoginUser user){er=user;}}Boolean类型注入失败解决方法:如果使用struts2的依赖注入,那么boolean类型的属性名不要以is开头。
Struts学习笔记Struts现在有struts 1.X跟struts 2版本为什么使用struts?●建立在MVC这种公认的好的模式上的,Struts在M、V、C上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在C和V上,有MVC的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化、日志等等;●开源项目,得到了包括它的发明者Craig R.McClanahan在内的一些程序大师和高手持续而细心的呵护并且经受了实战的检验,使其功能越来越强大,体系也日臻完善;●其他技术和框架具有很好的整合性。
如与Spring,Hibernate等框架的整合;●大大提高了开发速度。
框架概念(Framework)人们用于解决相同或者相似类型问题的方案。
特点:可重用性,可扩展性,可收缩性.基于请求响应模式的应用Framework的逻辑结构:控制器,业务逻辑层,数据逻辑层Struts的概念和体系结构Struts是Apache组织的一个开源项目。
主要是采用Servlet和JSP技术来实现的。
Struts是一个基于Sun Java EE平台的MVC框架,它采用MVC模式,将MVC模式“分离显示逻辑和业务逻辑”的能力发挥得淋漓尽致struts工作流程:1.当服务器启动web应用时,会读取web.xml文件,根据actionServlet的配置会启动这个servlet,创建这个实例时默认会读取web-inf下面的strus-config.xml文件,如果没有这个文件系统会报错启动失败,如果这个配置文件有语法错误,也会启动失败2.当客户端提交一个以.do为结尾的请求,应用会将这个请求交给actionServlet处理如果没有一个action元素的path属性与这个请求的路径相同,就会报No action config found for the specified url.3.如果找到了对应的action元素,那么如果请求带有表单,就会查找action的name属性如果name属性没有配置,会报错:Form bean not specified on mapping for action: "/loginAction"如果name属性有配置,根据这个属性值找form-bean元素,将创建这个bean,将请求的参数设置到这个bean中如果这个action配置了validate属性,那么就会对这个form-bean进行验证验证失败,直接返回input属性指定资源如果验证成功,就会根据type属性找到这个属性对应的类的实例(如果没找着,会创建),然后调用execute方法4.根据这个execute方法返回的forward的path属性打开对应的资源下载安装Struts文件,里面有JAR包(lib)、源码(src)、例子(apps)、文档(docs)等。
Struts入门(Struts 框架响应客户请求的流程+国际化+异常)Struts入门(Struts 框架响应客户请求的流程+国际化+异常)Struts实际上是在JSPModel2上实现的一个MVC的框架。
模型:如JavaBean EJB控制器:ActionServlet Action视图:JSP Struts客户化标签前端控制器:ActionServlet控制器:Action模型:ActionFormBean控制器与模型之间的映射:ActionMapping转发:ActionForward错误与信息处理:ActionErrorActionForm Bean它也是一种JavaBean,除了一些JavaBean的常规方法,另外它还包含一些特殊的方法用于验证其中数据的完整性。
Struts利用ActionFormBean来进行View组件与Controller 组件之间表单数据的传递。
Struts框架把View组件接受的用户输入的表单数据保存在ActionForm bean之中,把它传递给Controller组件,Controller组件可以对ActionForm Bean中的数据进行修改。
Jsp文件使用Struts标签读取修改后的ActionForm Bean的信息,重新设置HTML表单。
对于采用Struts的Web应用,在Web应用启动时会加载并初始化控制器ActionServlet。
ActionServlet从struts-config.xml配置文件中读取配置信息,再把它们存放到ActionMappings对象中。
ActionServlet在接收到用户请求时会检查对应的ActionMapping的实例是否存在,如果不存在则会创建一个ActionMapping的实例,其中包含了把请求转发至那个Action的信息。
ActionServlet会根据配置文件检查Action对应的ActionForm的实例,如果ActionForm的实例不存在,则会创建一个ActionForm的对象,并将客户提交的表单数据保存到ActionForm中。
1.struts2 步骤1.创建web项目2.添加struts2的必须jar包3.添加支持(配置web.xml文件)4.创建界面和相应的action5.配置struts.xml文件6.部署运行项目2.struts2的工作流程1. 浏览器发送一个请求。
2. 核心控制器FilterDispatcher根据请求决定调用合适的Action。
3. 拦截器(Intercepter)自动对请求应用通用功能,如验证等。
4. 回调Action的execute方法,该execute方法根据请求的参数来执行一定的操作。
5. Action的execute方法处理结果信息将被输出到浏览器中,支持多种形式的视图。
3.struts2的配置文件1.web.xml2.struts.xml(核心管理Action映射) 自己配置的3.struts-default.xml是struts2框架默认加载的配置文件。
它定义struts2一些核心的bean和拦截器。
这些拦截器是以key-value对的形式配置在struts-default.xml中,其中name是拦截器名字,就是后面使用该拦截器的引用点,value则指定拦截器的实现类。
4.struts.properties(核心管理属性) 自己配置的5.default.properties(核心管理属性)4.<struts>标签下的子标签配置1.<bean type="com.opensymphony.xwork2.ObjectFactory" name="struts"class="org.apache.struts2.impl.StrutsObjectFactory" />2.<include file="struts1.xml"></include>3.<constant name=“key” value=“value” />4.<package></package>5.package标签下的配置1.<action name="loginAction" class="com.action.loginAction"><result name="success">/welcome.jsp</result><result name="error">/index.jsp</result></action>2.<global-results><result></result></global-results>3.<global-exception-mappings><exception-mapping result="error"exception="java.long.Exception"></exception-mapping></global-exception-mappings>……………………………………6.action类实现Action接口和继承ActionSupport7.通过ActionContext类获得context(request),再通过context获得session和application context.put("key","value");session.put("key","value");session.put("key","value");public class ServletActionContext (org.apache.struts2)public static PageContext getPageContext()public static HttpServletRequest getRequest()public static HttpServletResponse getResponse()public static ServletContext getServletContext()8.在action中直接使用一个对象,两种方式:1.在提交表单时name属性为:对象.xxxx2.实现ModelDriven<类类型>接口和其方法。
struts教程详解Struts是一种基于Java的开源Web应用程序框架,它旨在简化Web应用程序的开发过程。
它遵循MVC(Model-View-Controller)设计模式,提供了一种结构化的方法来开发Web应用程序。
Struts的核心是一个前端控制器(Front Controller),它是整个框架的核心。
它接收来自用户的请求,并将其分派到相应的处理程序上。
在Struts中,这个前端控制器被称为ActionServlet。
在Struts中,应用程序被划分成一组逻辑部件,称为Action。
每个Action都相当于Web应用程序中的一个页面或操作。
当用户请求一些Action时,ActionServlet将负责查找并执行相应的处理程序。
在Struts中,业务逻辑被封装在一个中间部件中,称为ActionForm。
它是一个JavaBean,用于在视图和控制器之间传递数据。
ActionForm可以捕获用户输入的值,并将其传递给业务逻辑处理程序。
Struts还提供了一种验证框架,用于验证用户输入的数据。
通过使用这个验证框架,开发人员可以定义数据的验证规则,并在处理用户输入之前对其进行验证。
这可以有效地减少服务器端的数据校验工作。
在使用Struts开发Web应用程序时,需要按照以下步骤进行:1. 配置web.xml文件:在web.xml文件中配置Struts的前端控制器ActionServlet。
2. 创建Action:创建处理用户请求的Action类,并在struts-config.xml文件中进行相应的配置。
3. 创建ActionForm:创建用于封装用户输入数据的ActionForm类,并在struts-config.xml文件中与相应的Action进行关联。
5. 配置struts-config.xml文件:在struts-config.xml文件中配置Action、ActionForm和全局配置信息,如消息资源文件和异常处理器等。
1,Struts2的配置:1.1项目的配置:第一步:导包:将D:\software\tool\struts2\struts-2.3.16.1\apps\struts2-blank\WEB-INF\lib中的jar 包全部导入项目的lib文件夹中,其中jar包有:xw o rk-co re-2.3.16.1.j ar asm-3.3.j ar asm-co m m o ns-3.3.j ar asm-t ree-3.3.j ar co m m o ns-f i l eup l o ad-1.3.1.j ar co m m o ns-i o-2.2.j ar co m m o ns-l ang3-3.1.j ar co m m o ns-l o g g i ng-1.1.3.j ar f reem arker-2.3.19.j ar j avassi st-3.11.0.G A.j arl o g4j-1.2.17.j ar o g nl-3.0.6.j ar st rut s2-co re-2.3.16.1.j ar第二步:导入struts.xml文件文件中package可以自己定义。
第三步:编写web.xml文件其内容为struts2的核心拦截器,其他拦截去如果需要,必须写到struts2拦截器上面,否则,不起作用。
第四步:开发antion在后面详细描述;1.2开发action方式一:继承ActionSupport如果用struts2数据校验,必须继承此类。
方式二:实现Action 接口方式三:不继承任何类,不识闲任何接口1.3访问通配符通配符:在struts 中配置信息中,可以用*于{1}优化配置<package name="config" namespace="/" extends="struts-default"> 1.4 struts 中路径匹配原则1,访问路径=命名空间+action 的name 属性:public class UserAction extends ActionSupport{<!--<action name="login" class="cn.itcast.a_erAction2" method="login"> <result name="success">/index.jsp</result> </action> <action name="register" class="cn.itcast.a_erAction2" method="register"> <result name="success">/index.jsp</result> </action> --> <action name="user_*" class="cn.itcast.a_erAction2" method="{1}"> <result name="{1}">/{1}.jsp</result> </action></package><package name="config" namespace="/user" extends="struts-default"><action name="user_*" class="cn.itcast.a_erAction2" method="{1}"><result name="{1}">/{1}.jsp</result></action></package>访问的路径为:http://localhost:8080/user/user_login,其中login可以改为别的action 的name属性。
研发部文档中心 文档编号 产品版本 密级2.0 一般名称:使用Eclipse开发struts2教程 共 页使用Eclipse开发struts2教程(仅供内部使用)(注:文档命名规则:文档名+版本号-作者-时间)例如:新浪宁波网短信业务概要设计2.0-黑山-2005-05-23.doc拟制: 黑山 日期: 2009/01/20审核: 日期:审核: 日期:批准: 日期:版权所有 不得复制使用Eclipse开发struts2教程关键词:J2EE,iBatis,ORM摘 要: 本文档是eclispe开发struts2的一个教程学习文档。
缩略语清单:ORM:Object Relation Map注意在引用这些缩略语是注意区别大小写,没有在此出现的不能被直接引用。
例如:EJB统一为大写。
注:缩略语需要根据情况增减修改历史:修改历史清单作者 名称 时间黑山 初稿 2009-01-20一、 安装1.安装Eclipse:去/downloads/网站上下载Eclipse IDE for Java EE Developers(开发JA V A EE的IDE)。
然后解压缩即可使用!假设解压缩到D:\eclipse目录。
2.安装struts for eclipse的插件:(如果不想安装这个插件也可以,只是action映射文件要自己配置了)去/网站上下载Alveole 这个插件也可以直接在线安装(比较慢)。
先说直接下载插件再安装,下载下来以后解压缩,得到features和plugins 两个目录,直接把这两个目录拷贝到d:/eclipse目录下即完成插件的安装。
在线安装方法:运行eclipse.exe,然后找到:然后点Add site:在在线更新的地址拦里输入地址:/update/:确定以后形如:然后选中需要安装的项目,点击install安装即可完成安装,其他可在线安装的插件安装方法也一样!比如ibatis插件的安装,可以去/ibator.html下载插件,然后除了输入一个远程在线安装地址以外,还可以选择一个本地的文件夹(该文件夹包含features 和plugins目录以及site.xml文件);也可以选择一个本地安装压缩包,这个zip包里包含了features和plugins目录以及site.xml文件。
1、首先将以下必备jar文件copy到lib文件夹内:
2、在类路径文件夹(src)中新建一个名为struts.xml的文件:
模板配置可以到struts2.1.6包内的examples中找个struts.xml文件copy以下即可,模板如下:
3、配置web.xml。
打开META-INF下的WEB-INF文件下的web.xml文件:
Web.xml的原始配置已默认给出:
在</web-app>结束标签之前,对Struts进行配置。
因为Struts框架( Struts实质上就是在JSP Model 2的基础上实现的一个MVC框架,视图就是一组JSP组件,模型通常由JavaBean或EJB组件实现,控制器由FilterDispatcher类和Action类来实现)的中央控制枢纽就是FilterDispatcher,故需要对其进行配置,见下图:
过滤器别名由<filter></filter>标签内的<filter-name></filter-name>指定,<filter-class></filter-class>指定过滤器。
<filter-mapping></filter-mapping>内的<url-pattern></url-pattern>指定使用该过滤器的URL,上述代码为FilterDispatcher映射的URL为”/*”,这意味着所有访问本应用的客户请求都会先由FilterDispatcher来处理。
请求处理过程:URL满足“/*”(即所有URL)的客户请求,现在<filter-mapping></filter-mapping>内找到<filter-name></filter-name>指定的过滤器别名,然后再到<filter></filter>内,与其中的<filter-name></filter-name>进行匹配,匹配相同时,接着找到<filter-class></filter-class>所指定的过滤器,然后对客户请求进行处理。
4、接下来创建一个Action类:
点击“浏览”,弹出如下窗体:
键入“ActionSupport”,选中下面的匹配类,点击“确定”返回上一界面,点击“完成”
5、打开第3步创建的类,右键选择“源代码” 覆盖/实现方法,出现如下窗体:
在“选择要覆盖或实现的方法”下拉列表中,选中“execute()”方法
点击“确定”,会发现类中增加了一个方法:
6、在类中声明一个成员变量msg。
(初始化可不选)
然后,右键选择“源代码” 生成Getter和Setter…,出现以下窗口:
在msg前面打“V”号,然后点击“确定”,类中即出现两个方法:
7、接下来开始写execute()方法的方法体,以覆盖父类的execute()方法。
这里我们判断msg的内容是否是“Bad boy”,是的话返回成功,否则返回失败。
返回值类型为String,可以自定义返回值,也可以使用ActionSupport提供的返回值:
返回“成功”:return ActionSupport.SUCCESS;
返回“失败”:return ActionSupport.ERROR;
自定义可以这样写(只是例子):
返回“成功”:return“success”;
返回“失败”:return“error”;
8、下一步,对struts.xml文件进行配置。
如下图:
为了便于组织和管理Action,Struts的每个Action都存放在特定的包下面(由标签<package></package>指定)。
以上代码表明hello Action位于mystruts2包下,因此访问hello Action的完整URL为”/mystruts2/hello”或者”/mystruts2/hello.action”
(“/mystruts2”可以省略)。
”namespace=‘/’”表示根目录。
一对<action></action>标签表示一个Action,Action的name由“name”指定(不是之前定义的Action类的名字),Action 的Class的位置由“class”指定(这里才需要之前定义的Action类),<result></result>标签中“name”为Action类的返回值(见第七步),如果Action类的返回值与name的值匹配,则执行<result></result>中间的jsp文件。
上述代码表示,如果HelloWorld类返回“success”则执行hello.jsp,如果返回“error”
则执行errors.jsp
9、新建两个jsp文件,分别为hello.jsp和errors.jsp。
在index.jsp中定义一个表单,action属性取值为“hello.action”,表单内添加一个文本框,名字为“msg”(则文本框的值作为参数传递给HelloWorld.java的msg):
在errors.jsp文件中输出“你不是Bad boy,无权查看!”
在hello.jsp文件中,首先导入struts2的标签库
在<body></body>内使用property标签输出HelloWorld内msg的值
10、启动Tomcat服务器,在浏览器地址栏里键入“http://localhost:8080/strutsdemo/”,即出现如下页面:
10-1图1
键入“Bad girl”,提交,结果如下:
10-2图2
键入“Bad boy”,提交,结果如下:
10-3图3
也可以在地址栏里直接输入“http://localhost:8080/strutsdemo/hello.action”,结果同
10-2图2
11、如果浏览器对你说“Hello,Bad boy”和“你不是Bad boy,无权查看!”,那么,恭喜你!Bad boy!你已经会编写简单的Struts例子。