版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单元6基于Struts2的Web应用程序开发单元6基于Struts 2的Web应用程序开发Struts 2是Apache软件组织的一项开放源代码项目,是基于WebWork核心思想的全新框架,在Java Web开发领域中占有十分重要的地位。【问题探析】【问题1】Model2模型如何实现MVC?Struts与MVC模式有何关系?【问题2】Struts 1框架如何运行?Struts 1怎样实现MVC模式?【问题3】怎样理解“Struts 2是基于MVC的轻量级的Web应用框架”【问题4】Struts 2和MVC有何关系,Struts 2如何实现MVC模式?【知识必备】1Struts简介Struts是
2、Apache软件基金会(ASF)赞助的一个开源项目,它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目,它通过采用Java Servlet/JSP技术实现了基于Java EE Web应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。2Struts 2简介Struts 2并不是一个陌生的Web框架,它是以WebWork的设计思想为核心,吸收了Struts 1的优点,可以说Struts 2是Struts 1和WebWork结合的产物。3Struts 2的处理流程Struts是一个开源框架,使用struts的目的就是为了帮助我们减少在运用MVC设计模
3、型来开发Web应用的时间。Struts 2的简单处理流程说明如下:(1)Web客户端的浏览器发送请求。(2)核心处理器根据Struts.xml文件查找对应的处理请求的Action类。(3)WebWork的拦截器链自动请求应用通用功能,例如WorkFlow、Validation等功能(4)如果Struts.xml文件中配置了Method参数,则调用Method参数对应的Action类中的Method方法,否则调用Action的的Execute()方法来处理用户请求。(5)将Action类中的对应方法getXXX()返回的结果响应给浏览器。4Action对象简介(1)Action对象简介Actio
4、n对象是Struts 2框架中的重要对象,主要用于处理HTTP请求。在Struts 2 API中,Action对象是一个接口,位于com.opensymphony.xwork2包中。(2)Action的基本流程Struts 2框架主要通过Struts 2的过滤器对象拦截HTTP请求,然后将请求分配到指定的Action进行处理。5Struts 2的拦截器(1)拦截器概述拦截器是AOP(面向切面编程)的一种实现方式,通过它可以在Action执行前后处理一些相应的操作。Struts 2提供了多个拦截器,开发人员也可以根据需要配置拦截器。拦截器是Struts 2框架中一个重要的核心对象,动态地作用于A
5、ction与Result之间,可以动态地增加Action及Result。(2)Struts 2 APIStruts 2 API中有一个名为erceptor的包,其中有一些Struts 2内置的拦截器对象,它们具有不同的功能。在这些对象中,Interceptor接口是Struts 2框架中定义的拦截器对象,其他拦截器都直接或间接地实现于此接口。(3)拦截器Interceptor中包含的方法拦截器Interceptor中包含了3个方法,分别为init()、intercept()和destroy()。(4)AbstractInterceptor类
6、AbstractInterceptor类是一个实现了Interceptor接口的抽象类,该类已经实现了Interceptor接口的init()和destroy()方法,通过继承该类创建拦截器对象时,intercept()方法必须重写,如果没有用到init()和destroy()方法,则可以不重写。6EL表达式语言简介EL(Expression Language)表达式语言是JSP 2.0中引入的一种计算和输出Java对象的简单语言,可以简化在JSP开发中对对象的引用,从而规范页面代码,增强程序的可读性和可维护性。如今EL表达式是一项成熟、标准的技术,只要安装的Web服务器能够支持Servlet
7、 2.4/JSP 2.0,就可以在JSP页面中直接使用EL表达式。EL表达式语法很简单,以“$”开始,以“”结尾,中间为合法的表达式,其语法格式如下:$ 合法的表达式 7OGNL(对象图导航语言)简介OGNL(Object-Graph Navigation Language,对象图导航语言),它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性,这样可以更好的取得数据。【操作必备】(1)下载与配置Struts 2(2
8、)准备开发Web应用程序所需的图片文件、CSS样式文件和验证用的Javascript文件。(3)启动Eclipse,设置工作空间为Unit06,然后进入Eclipse的开发环境。(4)在Eclipse集成开发环境中配置与启动Tomcat服务器。(5)新建动态Web项目,命名为task6-X,本单元有8个任务,每个任务创建一个独立的Web项目,命名分别为task6-1至task6-8。(6)在Web项目中创建包,将其命名为“package06X”。本单元各个Web项目中的包分别命名为package061至package068。(7)添加Struts 2的核心类包将Struts 2的类库文件拷贝到
9、Web项目task6-X的文件夹“WebContentWEB-INFlib”下,并在Eclipse集成开发环境的“项目资源管理器”刷新Web项目task6-X。由于本单元各项任务实现功能比较简单,所以只需添加Struts 2的核心类包即可,所添加的类包如图6-6所示。(8)在web.xml文件中声明Struts 2提供的过滤器【基础应用】【任务6-1】测试Struts 2框架的正确配置【任务描述】(1)创建Java Web项目task6-1,并添加Struts 2的支持类库。(2)通过Struts 2的拦截器将客户端的HTTP请求转发给指定的Action处理,Action根据处理的结果返回给客
10、户端相应的页面printInfo6-1.jsp。【任务实施】1配置程序开发环境首先新建动态Web项目task6-1,在该项目中创建包package061。然后按照【操作必备】中介绍的方法添加Struts 2的核心类包以及在web.xml文件中声明Struts 2提供的过滤器。2创建配置文件struts .xml在Eclipse的【项目资源管理器】中,选择节点“Java Resources”中子节点“src”,并单击鼠标右键,在弹出的快捷菜单中选择【新建】【其他】命令,打开【新建】对话框的“选择向导”界面,在列表框中选择“XML File”,如图6-7所示。单击【下一步】按钮,打开【New XM
11、L File】对话框,在该对话框中选择父文件夹为“src”,在文本框中输入“struts.xml”文件名,如图6-8所示。依次单击【下一步】按钮,以后各步都取默认设置,最后单击【完成】按钮完成配置文件struts .xml的创建。在配置文件struts .xml中定义Action对象,其主要代码如表6-2所示。3新建一个Java类ActionClass6_1在Web项目task6-1的包package061中创建名为“ActionClass6_1”的Java类。打开ActionClass6_1.java文件,在ActionClass6_1类中编写代码定义message属性及相应的setMess
12、age()与getMessage()方法,在该类中重写了execute()方法,代码如表6-3所示。4创建JSP页面printInfo6-1.jsp在Web项目task6-1中创建名为“printInfo6-1.jsp”的JSP页面,该页面作为Action对象处理成功后的返回页面,其代码如下所示。<body> <h3><s:property value="message" /></h3> </body>在JSP页面printInfo6-1.jsp中使用Struts 2的标签库,首先要引入指定的标签库,在JSP代码的
13、顶部添加以下代码:<% taglib prefix="s" uri="/struts-tags" %>5创建JSP页面task6-1.jsp在Web项目task6-1中创建名为“task6-1.jsp”的JSP页面,在其中添加一个超链接用于访问所定义的Action对象,该链接指向的地址为test.action,其代码如下所示。<body> <a href="test.action">请求Struts2</a></body>Action对象的默认访问扩展名为.action,该扩
14、展名可以更改。 6运行程序输出结果运行JSP页面task6-1.jsp,在显示的页面中单击【请求Struts2】超链接,请求将交给Action对象test进行处理,其处理成功后返回printInfo6-1.jsp页面,显示“配置Struts2框架成功!”的提示信息。【任务6-2】使用Struts 2提供的动态Action实现动态操作【任务描述】(1)创建一个Java Web应用项目,应用Struts 2提供的动态Action实现数据的添加、修改、删除与查询的处理请求。(2)针对多个Action的情况,使用通配符简化配置,实现数据的添加、修改、删除与查询的处理请求。(3)通过配置<acti
15、on>元素的method属性,在Action对象中请求指定的业务逻辑方法,实现数据的添加、修改、删除与查询的处理请求。【任务实施】1配置程序开发环境首先新建动态Web项目task6-2,在该项目中创建包package062。然后按照【操作必备】中介绍的方法添加Struts 2的核心类包以及在web.xml文件中声明Struts 2提供的过滤器。2应用动态Action实现不同的处理请求(1)创建配置文件struts .xml在Eclipse的【项目资源管理器】的子文件夹“src”中创建一个配置文件struts .xml,在配置文件struts .xml中定义Action对象action6-
16、2,其主要代码如表6-4所示。(2)新建一个Java类ActionClass6_2在Web项目task6-2的包package062中创建名为“ActionClass6_2”的Java类。打开ActionClass6_2.java文件,在ActionClass6_2类中编写代码定义message属性及相应的setMessage()与getMessage()方法,在该类中还定义了新增、修改、删除和查询数据的方法,分别为add()、update()、delete()和find(),代码如表6-5所示。(3)创建多个JSP页面在Web项目task6-2的文件夹“folder6-2”中创建多个作为Ac
17、tion对象处理成功后的返回页面,JSP页面的名称分别为“add6-2.jsp”、“update6-2.jsp”、“delete6-2.jsp”和“find6-2.jsp”,这些JSP页面的主体代码都相同,只是页面标题有区别,其代码如下所示。<body> <s:property value="message" /> </body>(4)创建JSP页面task6-2.jsp在Web项目task6-2中创建名为“task6-2.jsp”的JSP页面,在其中添加4个超链接用于访问所定义的Action对象,该链接分别指向ActionClass6_
18、2类的添加、修改、删除和查询信息的请求,其代码如表6-6所示。使用Struts 2的动态Action时,其Action请求的URL地址中使用“!”号分隔Action请与请求字符串,而请求字符串的名称要与Action类中的方法名称相对应,否则会抛出java.lang.NoSuchMethodException异常。(5)运行程序输出结果运行JSP页面task6-2.jsp,在显示的页面中显示“新增数据操作”、“修改数据操作”、“删除数据操作”和“查询数据操作”4个超链接,如图6-10所示。3使用通配符简化配置实现不同的处理请求(1)在配置文件struts .xml中应用通配符添加配置代码打开配置
19、文件struts .xml,在该配置文件中使用通配符实现不同的处理请求,其主要代码如表6-7所示。(2)新建一个Java类BookAction6_2(3)新建一个Java类UserAction6_2(4)创建JSP页面task6-21.jsp在Web项目task6-2中创建名为“task6-21.jsp”的JSP页面,在其中添加8个超链接用于访问所定义的Action对象,该链接分别指向BookAction6_2和UserAction6_2类的添加、修改、删除和查询信息的请求,其代码如表6-8所示。(5)运行程序输出结果运行JSP页面task6-21.jsp,在显示的页面中显示8个超链接,如图6
20、-11所示。单击“新增图书数据操作”超链接,请求交给BookAction6_2类的add()方法处理,此时可以看到浏览器地址栏中的地址变为“http:/localhost:8080/task6-2/BookAction6_2!add”。4通过配置<action>元素的method属性实现不同的处理请求(1)在配置文件struts .xml中应用通配符添加配置代码打开配置文件struts .xml,在该配置文件中使用通配符实现不同的处理请求,其主要代码如表6-9所示。(2)新建一个Java类ActionClass6_22在Web项目task6-2的包package062中创建名为“A
21、ctionClass6_22”的Java类。打开ActionClass6_22.java文件,在ActionClass6_22类中编写代码定义message属性及相应的setMessage()与getMessage()方法,在该类中还定义了新增、修改、删除和查询数据的方法,分别为add()、update()、delete()和find(),这些方法的返回值都为“SUCCESS”,代码如表6-10所示。(3)创建JSP页面task6-22.jsp在Web项目task6-2中创建名为“task6-22.jsp”的JSP页面,在其中添加4个超链接用于访问所定义的Action对象,该链接分别指向Act
22、ionClass6_22类的添加、修改、删除和查询信息的请求,其代码如表6-11所示。(4)运行程序输出结果运行JSP页面task6-22.jsp,在显示的页面中显示4个超链接,如图6-10所示。单击“新增数据操作”超链接,请求交给ActionClass6_22类的add()方法处理,此时可以看到浏览器地址栏中的地址变为“http:/localhost:8080/task6-2/actionadd!add”。【任务6-3】使用Struts 2的常用标签的实现旅游信息调查【任务描述】(1)创建JSP页面,使用Struts 2的常用表单标签、property标签实现旅游信息调查。(2)在Strut
23、s 2框架中,将表单提交的数据自动注入到与Action对象中相对应的属性。【任务实施】1配置程序开发环境首先新建动态Web项目task6-3,在该项目中创建包package063。然后按照【操作必备】中介绍的方法添加Struts 2的核心类包以及在web.xml文件中声明Struts 2提供的过滤器。2创建配置文件struts .xml在Eclipse的【项目资源管理器】的子文件夹“src”中创建一个配置文件struts .xml,在配置文件struts .xml中定义Action对象action6_3,其主要代码如表6-12所示。3新建一个Java类UserAction在Web项目task6
24、-3的包package063中创建名为“UserAction”的Java类。打开UserAction.java文件,在UserAction类中编写代码定义多个属性及相应的setXXX()与getXXX()方法,在该类中重写了execute()方法,代码如表6-13所示。4创建JSP页面task6-3.jsp在Web项目task6-3中创建名为“task6-3.jsp”的JSP页面,该页面包含多个表单标签,主要用于用户输入或选择有关自助游的数据,其代码如表6-14所示。在JSP页面task6-3.jsp的顶部添加以下代码引入指定的标签库:<% taglib prefix="s&q
25、uot; uri="/struts-tags" %>5创建JSP页面printInfo6-3.jsp在Web项目task6-3中创建名为“printInfo6-3.jsp”的JSP页面,作为Action对象处理成功后的返回页面,在该页面显示用户提交的调查数据,其代码如表6-15所示。在JSP页面printInfo6-3.jsp的顶部添加以下代码引入指定的标签库:<% taglib prefix="s" uri="/struts-tags" %>6运行程序输出结果运行JSP页面task6-3.jsp,在显示的页面中输入
26、姓名、理想的旅游目的地,选择性别、职业类型、常上的旅游网站,如图6-12所示。然后单击【提交】按钮,在printInfo6-3.jsp页面显示用户提交的数据,如图6-13所示。【任务6-4】使用Struts 2创建数据验证器验证表单内容【任务描述】(1)Struts 2的数据校验机制有两种方式,即通过配置文件和通过重写ActionSuppoert类的validate()方法,应用这两种数据验证方式对用户注册页面的用户名和密码进行验证。(2)在Struts 2框架中使用数据验证框架,其验证文件的编写有字段验证器编写风格和非字段验证器编写风格两种,应用字段验证器编写风格编写代码对注册页面中的输入的
27、用户名进行验证,应用非字段验证器编写风格编写代码对注册页面中输入的密码进行验证。【任务实施】1配置程序开发环境首先新建动态Web项目task6-4,在该项目中创建包package064。然后按照【操作必备】中介绍的方法添加Struts 2的核心类包以及在web.xml文件中声明Struts 2提供的过滤器。2创建配置文件struts .xml在Eclipse的【项目资源管理器】的子文件夹“src”中创建一个配置文件struts .xml,在配置文件struts .xml中定义2个Action对象,其主要代码如表6-16所示。3新建一个Java类RegisterAction1在Web项目task
28、6-4的包package064中创建名为“RegisterAction1”的Java类。打开RegisterAction1.java文件,在RegisterAction1类中编写代码定义多个属性及相应的setXXX()与getXXX()方法,在该类中还重写了ActionSupport类的validate()方法,代码如表6-17所示。4新建一个Java类RegisterAction2在Web项目task6-4的包package064中创建名为“RegisterAction2”的Java类。打开RegisterAction2.java文件,在RegisterAction2类中编写代码定义多个属性
29、及相应的setXXX()与getXXX()方法,RegisterAction2类的大部分代码与类RegisterAction1相同,如表6-17所示。不同的是没有表6-17中第2行,也没有重写ActionSupport类的validate()方法。5新建一个验证文件RegisterAction2-validation.xml在Web项目task6-4的包package064中创建名为“RegisterAction2-validation.xml”的验证文件。打开RegisterAction2-validation.xml文件,编写如表6-18所示的代码。6创建JSP页面task6-41.jsp
30、在Web项目task6-4中创建名为“task6-41.jsp”的JSP页面,该页面包含多个表单标签,主要用于用户注册时输入用户名和密码,其代码如表6-19所示。7创建JSP页面task6-42.jsp在Web项目task6-4中创建名为“task6-42.jsp”的JSP页面,该页面包含多个表单标签,主要用于用户注册时输入用户名和密码,其代码与task6-41.jsp页面的代码基本相同,但表单的action属性值设置为“register2.action”。8创建JSP页面welcome.jsp在Web项目task6-4中创建名为“welcome.jsp”的JSP页面,该页面作为Action对
31、象处理成功后的返回页面,其代码如表6-20所示。9运行程序输出结果(1)运行JSP页面task6-41.jsp,在显示的用户注册页面中暂不输入用户名和密码,直接单击【提交】按钮,此时经RegisterAction1类的validate()方法校验显示相关提示信息,如图6-14所示。图6-14task6-41.jsp页面校验数据后显示的相关提示信息重新输入用户名为“admin”,两次输入相同的密码,再次单击【提交】按钮,此时校验通过,打开welcome.jsp页面,在该页面中显示“输入的用户名为:admin,通过验证!”的信息。(2)运行JSP页面task6-42.jsp,在用户注册页面的“用户
32、名”文本框中输入“adm”,在“密码”文本框中“123”,在“确认密码”文本框中输入“456”,然后单击【提交】按钮,此时经RegisterAction2-validation.xml验证文件校验显示相关提示信息,如图6-15所示。图6-15task6-42.jsp页面校验数据后显示的相关提示信息重新输入用户名为“admin”,两次输入相同的密码,再次单击【提交】按钮,此时校验通过,打开welcome.jsp页面,在该页面中显示“输入的用户名为:admin ,通过验证!”的信息。【渐进应用】【任务6-5】使用Struts 2实现用户登录功能【任务描述】(1)使用Struts 2框架提供的表单标
33、签创建用户登录页面。(2)创建验证文件,对用户登录页面输入的用户名和密码进行验证。(3)使用Struts 2的处理机制将用户登录表单提交的数据自动注入到与Action对象中相应的属性,如果在登录表单中输入的用户名和密码都正确,则在JSP页面显示欢迎信息,否则返回登录表单,重新输入用户名或密码。【任务实施】1配置程序开发环境首先新建动态Web项目task6-5,在该项目中创建包package065。然后按照【操作必备】中介绍的方法添加Struts 2的核心类包以及在web.xml文件中声明Struts 2提供的过滤器。2创建JSP页面task6-5.jsp在Web项目task6-5中创建名为“t
34、ask6-5.jsp”的JSP页面,该页面包含多个表单标签,主要用于用户登录时输入用户名和密码,在表单标签的action属性中指定处理表单信息的Action对象,其代码如表6-21所示。3创建JSP页面welcome.jsp在Web项目task6-5中创建名为“welcome.jsp”的JSP页面,该页面作为Action对象处理成功后的返回页面,其主要代码如下所示,该页面使用<s:property>标签来获取并显示相应的属性值。<span>登录成功!欢迎您<s:property value="username" /></span&g
35、t;4新建一个Java类LoginAction在Web项目task6-5的包package065中创建名为“LoginAction”的Action文件。打开LoginAction.java文件,在LoginAction类中编写代码定义多个属性及相应的setXXX()与getXXX()方法,在该类中还重写了ActionSupport类的execute()方法,代码如表6-22所示。5创建配置文件struts .xml在Eclipse的【项目资源管理器】的子文件夹“src”中创建一个配置文件struts .xml,在配置文件struts .xml中定义1个Action对象loginAtion,其主
36、要代码如表6-23所示。6新建一个验证文件LoginAction-validation.xml在Web项目task6-5的包package065中创建名为“LoginAction-validation.xml”的验证文件。打开LoginAction-validation.xml文件,编写如表6-18所示的代码。7运行程序输出结果运行JSP页面task6-5.jsp,在用户登录页面的“用户名”文本框中输入“admin”,在“密码”文本框和“确认密码”文本框中输入“123456”,然后单击【提交】按钮,此时经LoginAction-validation.xml验证文件校验表单数据,如果校验通过,打
37、开welcome.jsp页面,在该页面中显示“登录成功!欢迎您admin”的欢迎信息。【任务6-6】使用Struts 2实现用户注册功能【任务描述】(1)使用Struts 2框架提供的表单标签创建用户注册页面。(2)创建验证文件,对用户注册页面输入的用户名、密码和Email地址进行验证。(3)使用Struts 2的处理机制将用户注册表单提交的数据自动注入到与Action对象中相应的属性,如果用户注册成功则在JSP页面welcome.jsp显示“注册成功!”的提示信息,否则返回注册表单,重新输入用户信息。【任务实施】1配置程序开发环境首先新建动态Web项目task6-6,在该项目中创建包pack
38、age066。然后按照【操作必备】中介绍的方法添加Struts 2的核心类包以及在web.xml文件中声明Struts 2提供的过滤器。2创建JSP页面task6-6.jsp在Web项目task6-5中创建名为“task6-6.jsp”的JSP页面,该页面包含多个表单标签,主要用于用户注册时输入相关用户信息,在表单标签的action属性中指定处理表单信息的Action对象,其代码如表6-24所示。3创建JSP页面welcome.jsp在Web项目task6-6中创建名为“welcome.jsp”的JSP页面,该页面作为Action对象处理成功后的返回页面,其主要代码如下所示,该页面使用<
39、s:property>标签来获取并显示相应的属性值。<span><s:property value="name" />注册成功!</span>4新建一个Java类RegisterAction在Web项目task6-6的包package066中创建名为“RegisterAction”的Action文件。打开RegisterAction.java文件,在RegisterAction类中编写代码定义多个属性及相应的setXXX()与getXXX()方法,在该类中还实现了ActionSupport类的execute()方法,在该方法中直接返
40、回SUCCESS,代码如表6-25所示。5创建配置文件struts .xml在Eclipse的【项目资源管理器】的子文件夹“src”中创建一个配置文件struts .xml,在配置文件struts .xml中定义1个Action对象registerAction,其主要代码如表6-26所示。6新建一个验证文件RegisterAction-validation.xml在Web项目task6-6的包package066中创建名为“RegisterAction-validation.xml”的验证文件。打开RegisterAction-validation.xml文件编写数据验证代码,新添加的验证代码
41、如图6-27所示,其他代码如表6-18所示。7运行程序输出结果运行JSP页面task6-6.jsp,在用户注册页面的“用户名”文本框中输入“admin6”,在“密码”文本框和“确认密码”文本框中输入“123456”,在“Email”文本框中输入“good”,然后单击【提交】按钮,此时经RegisterAction-validation.xml验证文件校验表单数据,如果校验通过,打开welcome.jsp页面,在该页面中显示“admin6注册成功!”的欢迎信息。【典型应用】【任务6-7】使用Struts 2实现避免重复提交网页数据 【任务描述】(1)创建JSP页面,在该页面中使用防刷新的Stru
42、ts 2标签<s:token/>。(2)创建struts.xml配置文件,在该文件中配置Action对象,使用<interceptor-ref />标签配置系统默认的拦截器栈和token拦截器,并定义重复提交转向的视图,该逻辑视图名为invalid.token,如果处理结果返回success,则转向show.jsp文件。【任务实施】1配置程序开发环境首先新建动态Web项目task6-7,在该项目中创建包package067。然后按照【操作必备】中介绍的方法添加Struts 2的核心类包以及在web.xml文件中声明Struts 2提供的过滤器。2创建JSP页面task6
43、-7.jsp在Web项目task6-7中创建名为“task6-7.jsp”的JSP页面,该页面使用了<s:form>、<s:textfield>、<s:submit>和<s:token/>等多个表单标签,在表单标签的action属性中指定处理表单信息的Action对象,其代码如表6-28所示。3创建JSP页面show.jsp在Web项目task6-7中创建名为“show.jsp”的JSP页面,该页面作为Action对象处理成功后的返回页面,其主要代码如下所示,该页面使用EL表达式的隐含对象requestScope获取Action类中设置的参数go
44、odsName的值。<span>正常提交,提交的图书名称为:$requestScope.goodsName</span>4创建JSP页面refresh.jsp在Web项目task6-7中创建名为“refresh.jsp”的JSP页面,该页面作为重复提交页面时转向的页面,其主要代码如下所示。<h3>请不要重复提交页面</h3>5新建一个Java类Action067在Web项目task6-7的包package067中创建名为“Action067”的Action文件。打开Action067.java文件,在Action067类中编写代码定义了属性gna
45、me及相应的setGname()与getGname()方法,在该类中还实现了ActionSupport类的execute()方法,在该方法中使用ActionContext对象的put()方法,将属性gname的值保存到参数goodsName中,其返回值为SUCCESS,代码如表6-29所示。6创建配置文件struts .xml在Eclipse的【项目资源管理器】的子文件夹“src”中创建一个配置文件struts .xml,在配置文件struts .xml中定义1个Action对象myAction,其主要代码如表6-30所示。7运行程序输出结果运行JSP页面task6-7.jsp,在表单的“商品
46、名称”文本框中输入“苹果iPhone 5S”,如图6-16所示。然后单击【提交】按钮,此时转向show.jsp页面,在该页面中显示“正常提交,提交的商品名称为:苹果iPhone 5S”的信息。图6-16JSP页面task6-7.jsp的运行结果如果刷新该页面,则Action控制转向refresh.jsp页面,并显示“请不要重复提交页面”的提示信息。【任务6-8】使用Struts 2实现信息显示的国际化【任务描述】国际化是指应用程序支持多种语言和格式化习惯集合,是为了满足应用程序在世界上不同地区的用户群的习惯而提出的。程序在不做任何修改的情况下,就可以在不同的国家或地区和不同的语言环境下,按照当
47、地的语言和格式习惯显示字符。创建用户登录的JSP页面,在该页面运行时,能够根据客户端请求的语言不同自动适应显示中文字符界面或英文字符界面。【任务实施】1配置程序开发环境首先新建动态Web项目task6-8,在该项目中创建包package068。然后按照【操作必备】中介绍的方法添加Struts 2的核心类包以及在web.xml文件中声明Struts 2提供的过滤器。2创建资源文件每一个资源文件是“键值”对的集合,在JSP页面中可以通过键来找到相应的值。在Eclipse的【项目资源管理器】的子文件夹“src”中创建一个名为“messageResource_en_US.properties”的资源文
48、件,该资源文件用于保存英文内容,其内容如表6-31所示。在子文件夹“src”中创建另一个名为“messageResource_zh_CN.properties”的资源文件,该资源文件用于保存中中文内容,其内容如表6-32所示。由于Java从流中读取属性或向流中保存属性时使用的字符集编码是ISO8859-1,所以保存中文内容的属性值需要进行Unicode转义,例如,键title的中文值是“欢迎您登录”,经过转义后的值是“u767Bu5F55u9875u9762”。3新建一个Java类LoginAction在Web项目task6-8的包package068中创建名为“LoginAction”的Action文件。打开LoginAction.java文件,在LoginAction类中编写代
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 租赁租房合同范本格式锦集五篇
- 公园项目可行性研究报告
- 粮仓房项目可行性研究报告
- 年产5000吨中药饮片生产线技改扩建项目可行性研究报告59
- 教师读书心得500字大全5篇
- 区域内行业保护合同
- 新生军训总结讲话稿5篇
- 青春梦想演讲稿格式(素材下载7篇)
- 安全心得100字简单(8篇)
- 法律事务所公文及督办管理流程
- GB/T 42455.2-2024智慧城市建筑及居住区第2部分:智慧社区评价
- 2024年认证行业法律法规及认证基础知识
- YYT 0653-2017 血液分析仪行业标准
- 刑事受害人授权委托书范本
- 《文明上网健康成长》的主题班会
- 框架结构冬季施工方案
- 医疗技术临床应用及新技术新项目管理制度考核试题及答案
- 装配式挡土墙施工方案(完整版)
- 防炫(AG工艺)玻璃屏项目可行性研究报告模版
- 既有玻璃幕墙安全性鉴定技术规程
- 小学汉语拼音字母表卡片自制(四线格版)Word编辑
评论
0/150
提交评论