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已经配置好了。
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例子。