- 浏览: 213841 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
q10000000:
你好 适用madMadia点击上传到服务器 没有反应啊LZ
在项目中整合FCKeditor文本编辑器 -
liweixxxx1990:
spring本版是3.0的(和版本也有关系吗?) 配置用到了s ...
struts2+spring发送mail -
floger:
liweixxxx1990 写道我照着你这个写的出现了下面的错 ...
struts2+spring发送mail -
liweixxxx1990:
我照着你这个写的出现了下面的错误,怎么解决啊??:Messag ...
struts2+spring发送mail -
jueyue:
不错,把问题解决了
Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决
到写本文为止,Struts的最新版本是 2.0.6。Struts 2.0.6的下载地址是:
http://struts.apache.org/download.cgi#struts206。
为了方便,可以选择下载Full发布包:
http://mirrors.sirium.net/pub/apache/struts/binaries/struts-2.0.6-all.zip。
struts自带有几个有用的范例,我们可以拿来学习研究一下。本文就是参考子apps目录中的blank项目。
本HelloWorld的需求很简单,只是可以通过英语和汉语两种语言来显示HelloWorld。当然,这不是自动翻译。只是在不同的环境中,读取不同的字符串。
这是Struts2的入门的第一个范例。是在eclipse 3.2.2 + myeclipse 5.2.2环境下开发的。
读者可能会问,myeclipse不是自带有struts吗?是的。Myeclipse为了方便开发员,带有struts 1.1和1.2。但是没有Struts 2的开发包。Myeclipse是个很有用的东西,Myeclipse对开发和部署web站点,编辑xml文件,jsp标记很有帮助,因此,我在这提到myeclipse。这不是为myeclipse做广告。当然,你也可以使用eclipse中其他web开发插件。
开发HelloWorld项目的基本步骤是:
1. 建立web项目
2. 导入Struts 2库文件
3. 修改web.xml文件
4. 建立index.html文件。
5. HelloWorld.jsp文件
6. Action文件
7. 建立Struts配置文件
8. properties配置文件
1. 建立web项目
新建的的web项目名称是:jeff-struts2-helloworld。
图表 1
Myeclipse产生一些目录结构。下图是在该项目完成时的目录结构。
图表 2
2. 导入Struts 2库文件
图表 3
这5个文件是必须的。在struts网站下载下来文件包里面。把这5个文件导入到WEB-INF/lib目录里。这5个文件自动的加入到构建路径中了。
3. 修改web.xml文件
1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
5 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
6
7 <welcome-file-list>
8 <welcome-file>index.html</welcome-file>
9 </welcome-file-list>
10
11 <filter>
12 <filter-name>Struts 2</filter-name>
13 <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
14 </filter>
15
16 <filter-mapping>
17 <filter-name>Struts 2</filter-name>
18 <url-pattern>/*</url-pattern>
19 </filter-mapping>
20 </web-app>
21
在web.xml文件中,首先建立首页文件(index.html),这样方便访问。然后加入一个过滤器(filter),过滤器类是:org.apache.struts2.dispatcher.FilterDispatcher 。Struts 2是通过FilterDispatcher这个过滤器(filter)来实现的。
4. 建立index.html文件。
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <title>index.html</title>
5 <meta http-equiv="refresh" content="0;example/HelloWorld.action" />
6 </head>
7
8 <body>
9 <p>Loading </p>
10 </body>
11 </html>
12
index.html文件只是用于导向作用。这里有个规则:"Link actions not pages."。意思是说:通过action来访问web,而不是jsp文件。所以,我在index.html导向dao一个HelloWorld.action,而不是HelloWorld.jsp。
5. HelloWorld.jsp文件
1 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%>
2 <%@ taglib prefix="s" uri="/struts-tags"%>
3
4 <?xml version="1.0" encoding="utf-8" ?>
5 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
6 <html xmlns="http://www.w3.org/1999/xhtml">
7 <head>
8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9 <title><s:text name="helloworld.message"></s:text>
10 </title>
11 </head>
12 <body>
13 <h2>
14 <s:property value="message" />
15 </h2>
16 <ul>
17 <li>
18 <s:url id="url" action="HelloWorld">
19 <s:param name="request_locale">en</s:param>
20 </s:url>
21 <s:a href="">English</s:a>
22 </li>
23 <li>
24 <s:url id="url" action="HelloWorld">
25 <s:param name="request_locale">zh</s:param>
26 </s:url>
27 <s:a href="">Chinese</s:a>
28 </li>
29 </ul>
30 </body>
31 </html>
32
在实际的项目中,页面的内容可能会比较复杂,可以用dreaweaver来先用静态的文本来填充布局,然后,再用struts 标记来代替这些文本。新建的html和jsp文件,尽可能的遵循xhtml的标准。
在文件的开头,为了使用struts 2标记,必须有这样的一行:
<%@ taglib prefix="s" uri="/struts-tags"%>
在struts 2 中使用文本有两种方法:本项目都采用了,这也是为了演示Struts 2的功能。
从properties配置文件中读取。如:<s:text name="helloworld.message" /> 就会从properties中读取配置文件中helloworld.message这个配置。
从bean的属性中读取。如:<s:property value="message" />,这就会从本页面相关的上下文中查找到message这个属性并显示出来。
<s:url />和<s:a />标记,在这里不打算详细介绍。
6. Action文件
在本项目中,ExampleSupport类继承自ActionSupport类,HelloWorld又继承自ExampleSupport类。在这里ExampleSupport类没有做任何事情。但在实际的项目中,可以把项目中其他Action所需的公共的内容,写在ExampleSupport类中。我这里是尽可能的按项目的方式开发,而完全是按照玩具的方式开发。
ExampleSupport.java文件
1 package jeff.struts2.helloworld;
2
3 import com.opensymphony.xwork2.ActionSupport;
4
5 public class ExampleSupport extends ActionSupport {
6 }
7
HelloWorld.java文件
1 package jeff.struts2.helloworld;
2
3 public class HelloWorld extends ExampleSupport {
4
5 private String message;
6
7 public String getMessage() {
8 return message;
9 }
10
11 public void setMessage(String message) {
12 this.message = message;
13 }
14
15 @Override
16 public String execute() throws Exception {
17 setMessage(getText("helloworld.message"));
18 return SUCCESS;
19 }
20 }
21
7. 建立Struts配置文件
在struts2-core-2.0.6.jar文件中,有struts-2.0.dtd文件。Struts就是通过该文件来验证struts配置文件的。在本项目中,有两个配置文件:struts.xml文件和example.xml文件。
struts.xml文件:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE struts PUBLIC
3 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4 "http://struts.apache.org/dtds/struts-2.0.dtd">
5
6 <struts>
7 <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
8 <constant name="struts.devMode" value="true"></constant>
9
10 <include file="example.xml"></include>
11
12 </struts>
13
example.xml文件
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE struts PUBLIC
3 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4 "http://struts.apache.org/dtds/struts-2.0.dtd">
5
6 <struts>
7 <package name="example" namespace="/example" extends="struts-default">
8 <action name="HelloWorld" class="jeff.struts2.helloworld.HelloWorld">
9 <result>/example/HelloWorld.jsp</result>
10 </action>
11 </package>
12 </struts>
13
在这里,我再说一句:本项目尽可能的按项目的方式开发,而完全是按照玩具的方式开发。因为在实际项目中,Struts要配置的内容可能有很多,为了方便编辑和维护struts配置文件,把struts.xml文件拆分成多个文件,然后在struts.xml文件中用<include file />标记把这些配置文件加载进来。
8. properties配置文件
我喜欢在页面每加入一个需要该配置文件中的配置时,就往package.properties中加入一项。在适当的时候,再来把package.properties文件翻译成不同语言的配置文件。
package.properties
helloworld.message=Struts is up and running
package_en.properties
helloworld.message=Struts is up and running
package_zh.properties
helloworld.message=Struts\u5df2\u7ecf\u642d\u5efa\u597d\u4e86\uff0c\u5e76\u5207\u5728\u8fd0\u884c\u2026\u2026
不能在中文的pakcage_zh.properties配置文件中,直接写汉字。在eclipse中有插件,可以直接转换。Sun公司的jdk自带有个工具转换,叫做native2ascii。我在eclipse中配置了一个外部工具,工具配置如下:
图表 4
native2ascii的命令格式是这样的:native2ascii sourcefile desitationfile。这个工具配置用到了一个技巧。就是在package_zh文件(注意:该文件没有扩展名)中写汉字,然后运行该工具,就生成了package_zh.properites文件。每次改动package_zh文件,并要部署项目前,先运行一下该工具。
package_zh文件的内容如下:
helloworld.message=Struts已经搭建好了,并切在运行 ……
发表评论
-
struts2安全缺陷(下)
2010-10-18 15:05 1836struts2的taglib设计缺陷 ... -
Struts2安全缺陷(上)(转)
2010-10-18 15:03 1244本文介绍了java开发流行框架struts2以及web ... -
Struts2的异常处理机制:
2010-08-20 15:39 1654Struts2的异常处理机制: 任何成熟的MVC ... -
文件上传struts2 实现文件上传功能(4)
2009-08-22 15:34 11182、多文件上传修改action private Lis ... -
文件上传struts2 实现文件上传功能(3)
2009-08-22 15:32 831(三)使用struts2进行文件上传、下载 需引入两个jar包 ... -
文件上传struts2 实现文件上传功能(2)
2009-08-22 15:31 850(二)手动采用fileupload组建进行文件上传upload ... -
文件上传struts2 实现文件上传功能(1)
2009-08-22 15:29 756(一)从底层透析文件上传的实现,此时并没有介入struts21 ... -
struts2 中文乱码问题解决方法
2009-04-20 17:02 2464JAVA 中URL链接中文参数乱码的若干处理方法,现在整理收录 ... -
Struts2所有插件简介--目前到达40余种
2009-04-10 13:32 928今天无意查看了Struts2的插件时,发现已经林林总总有4 ... -
JSP中防止重复提交(Javascript)
2009-04-09 08:58 1688Struts2本身提供了重复提交的检查机制,但是我要的 ... -
Struts2中Session的使用
2009-04-03 14:52 694在Struts2里,如果需要在Action中使用ses ... -
Struts2中Session的使用
2009-03-30 12:17 845在Struts2里,如果需要在Action中使用ses ... -
struts2 session用法
2009-03-30 12:15 1814web.xml <?xml version=" ... -
Struts2 iterator标签集合中元素为数组的显示-关于数组和List之间相互转换的方法
2009-03-24 15:07 58711.List转换成为数组。(这里的List是实体是ArrayL ... -
[Struts 2.0]struts2的struts.properties配置文件详解
2009-03-20 12:07 723struts.action.extension ... -
struts2中用DOJO时间控件dropdowndatepicker
2009-03-18 16:27 3002在struts2中集成了对dojo的支持,这里以一个比较常用的 ...
相关推荐
本篇学习笔记将引导我们从零开始,通过一个简单的"HelloWorld"项目,了解Struts2的基础知识。 首先,我们需要在本地环境中搭建Struts2的开发环境。这包括安装JDK、配置Java环境变量、下载Apache Struts2的最新版本...
### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...
在本篇学习笔记中,我们将聚焦于环境搭建和创建第一个"Hello, World!"程序。 首先,要开始学习Struts2,你需要确保你的开发环境中已经安装了以下基本组件: 1. **Java Development Kit (JDK)**:Struts2依赖于Java...
### Struts2学习笔记知识点详解 #### 一、Struts2框架的基本引入步骤 ##### 1. 导入Struts2相关Jar包 在引入Struts2框架时,首先需要将Struts2的相关Jar包导入到项目的类路径中。这些Jar包通常包括核心库以及其他...
以上就是Struts2学习笔记中涵盖的主要知识点,这些内容涵盖了从基础到进阶的应用,对于理解和掌握Struts2框架至关重要。尽管对于初学者来说可能有些复杂,但随着深入学习,你会发现Struts2的强大和实用性。
当用户访问`HelloWorld.action`时,Struts2框架会根据配置文件创建`HelloWorld`实例,并调用`execute()`方法。执行完成后,结果(在这种情况下是`SUCCESS`)将决定哪个结果配置会被执行,这里是显示`HelloWorld.jsp`...
【张冰Struts2学习笔记】0102_第一个Struts2实例 在Java Web开发领域,Struts2框架是十分重要的MVC(模型-视图-控制器)架构之一,它极大地简化了Web应用程序的开发流程。这篇学习笔记将带你入门Struts2,通过创建...
NULL 博文链接:https://pwpw1218.iteye.com/blog/2106955
在探讨Struts2的学习心得之前,我们先来分析一下Struts2与Struts1之间的区别。 ##### 1.1 架构设计 - **Struts1**:采用MVC(Model-View-Controller)架构模式,其中控制器是由`ActionServlet`来实现的,该控制器...
### Struts2.1学习笔记 #### Struts2的来源与优点 - **来源**:Struts2是在WebWork2的基础上发展起来的,它继承了WebWork2的优点,并且进行了改进,使其更适合现代Web应用程序的需求。与Struts1相比,Struts2的...
本笔记将深入探讨Struts2的核心组件、配置以及它的一些关键特性。 首先,让我们从`web.xml`配置文件开始。这个文件是Java web应用的部署描述符,它告诉服务器如何处理请求。在Struts2中,我们定义了一个名为`struts...
黑马程序员的笔记中可能包含了如何创建一个简单的Struts2应用,从HelloWorld实例到实际的表单提交、文件上传下载等实战案例,帮助初学者快速掌握Struts2的基本用法。 通过学习这些笔记,开发者将能够理解Struts2的...
创建一个基本的Struts2应用通常从一个简单的"Hello World"开始。首先,需要在`struts.xml`配置文件中定义一个Action,然后创建一个对应的Action类,该类通常会有一个返回"Hello World"的execute方法。接着,定义一...
这个"struts2 学习资料"包含了关于Struts2的基础到进阶的学习资源,可能是教程文档、示例代码或者是相关的学习笔记。 Struts2框架的核心特性包括: 1. **Action类**:在Struts2中,Action类是业务逻辑的载体,它...
例如,`greeting=Hello, World!`。针对不同的语言,我们创建相应的资源文件,如`messages_en.properties`(英文)、`messages_zh_CN.properties`(简体中文)等。 在Struts2中,我们可以使用`<s:text>`标签来获取和...
通过阅读文章《Groovy学习笔记 Struts2集成--Groovy类作为Action》,你可以更深入地了解如何在实际项目中利用Groovy的特性来优化Struts2应用。提供的压缩包文件`struts2-groovy-plugin`可能包含了Struts2 Groovy插件...
本资料包包含了关于Struts2的学习笔记和代码示例,旨在帮助初学者或进阶者深入理解并熟练掌握这一框架。 笔记部分可能涵盖以下知识点: 1. **Struts2基础**:介绍Struts2的基本概念,包括Action、Result、...