您的位置:首页 > 编程语言 > Java开发

Struts 2框架搭建(Hello World)

2007-09-12 08:46 549 查看
首先要介绍的是我们要使用struts2 那当然是要必须知道用它需要那些jar文件,一般可开源的框架都已经为您提供好了,在struts-2.0.9里如图:



struts2的jar库

当然我们也不需要每个项目都要这么多包,struts2的struts-2.0.9的包里也提供了一个基本的struts2的应用所需的jar包(apps/struts2-blank-2.0.9.war.解压)
如图:


基本的struts2的应用所需的jar包

好了我们明白了一个基础struts2应用的所需jar了 我们就开始我们Struts2方式的hello world了 呵呵J。

在Struts2 工程必须首先在web.xml文件里注册struts2的控制器(FilterDispatcher)如图:

这样就我们就给我们的应用配置好了struts2的分发器,(然后在任意请求就通过FilterDispatcher来分发每一个请求),
FilterDispatcher到底是怎样找每一个struts2的Action呢?下面来我们来了解一下,
Struts2”骨架配置文件
在正确的配置完web.xml文件之后,我们需要为struts2本身配置一个”骨架”配置文件,这个配置文件的名字为struts2.xml,而且要将它放置到WEB-INF/classes目录下(struts-xml)。

<?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>
<package name="helloWorld" extends="struts-default">
<action name="hello" class="com.struts2.HelloWorld">
<result name="input">HelloWorld.jsp</result>
<result name="success">result.jsp</result>
</action>
</package>
</struts>
<package name="helloWorld" extends="struts-default">
Struts2提供了默认的配置为这个默认的配置在struts-default.xml里,注意你不需要自己创建这个文件,因为它在struts2-core-2.0.9.jar的里面。

<action name="hello" class="com.struts2.HelloWorld">
Action标签是给struts2里的一个 action的配置 name属性是指action 的名字 class是 指action所对应类的完全类名。

<result name="input">HelloWorld.jsp</result>
Result 是 struts2的结果跳转字符串
Struts2 action 返回的字符串来与<result的name属性来确定 要调转到那个资源
明白了上面的配置我们来看看Struts2的Action 是怎么写的吧!

package com.struts2;

import java.text.DateFormat;
import java.util.Locale;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorld extends ActionSupport {

/**
*
*/
private static final long serialVersionUID = 1L;
private String message;
private String name;

@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
if("".equals(name)|"".equals(message)| name==null|message==null)
{
return INPUT;
}
message=name+"at in "+DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG,Locale.CHINA).format(System.currentTimeMillis()) +" say: "+message+" ";
return SUCCESS;
}

public void setMessage(String message) {
this.message = message;
}

public void setName(String name) {
this.name = name;
}

public String getMessage() {
return message;
}

public String getName() {
return name;
}

}
Struts 2 简单之处在于他没有像Spring MVC的那么多Controller,他为用户提供了一个简单的Action基类ActionSupport它是struts2的核心类,它可以做struts2要做的99%的事。我们继承了ActionSupport来实现一个struts2式的helloworld。Name属性是用户输入的姓名,message是用户要传达的信息,上面的讲解也需有些模糊,下面我们来看看具体的jsp页面吧!
HelloWorld.jsp
<%@ page language="java" pageEncoding="gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<s:head/>
<title>helloWorld</title>
</head>

<body>
<s:form action="hello">
<s:textfield label="User Name" name="name"/>
<s:textarea label="Message" name="message"/>
<s:submit/>
</s:form>
</body>
</html>
这个jsp页面把用户输入的姓名,和信息提交个这个名为hello的action。(<s:form>这些是struts的标签它是类似与产出一个表单,这些标签在这不做详细讲解)我们现在大概明白了上面action的作用了吧!我们看完了输入(Input page)的页,下面我们看看struts2的(success page)吧!
result.jsp
<%@ page language="java" pageEncoding="gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'result.jsp' starting page</title>
<s:head/>
</head>
<body>
Message: <s:property value="message"/>
</body>
</html>
这个jsp页面把用户输入的信息显示出来了。在我们的页面的编码都是用的GB2312,struts2的默认编码是utf-8,这样我们的页面就可能产生乱码!那我们怎么解决这个问题呢!下面我们讲解struts2的运行时配置!
struts2的运行时配置
struts2的分发层是filter那它的每个配置都是在FilterDispatcher类中做的,FilterDispatcher把Action的每一类配置分成多个配置文件而每一个配置文件也相应的提供了默认的配置,这样很灵活也减轻了复杂度,那我们来讲解一下struts2的运行时配置文件struts.properties;
struts-default.properties
### Struts default properties
###(can be overridden by a struts.properties file in the root of the classpath)
###

### Specifies the Configuration used to configure Struts
### one could extend org.apache.struts2.config.Configuration
### to build one's customize way of getting the configurations parameters into Struts
# struts.configuration=org.apache.struts2.config.DefaultConfiguration

### This can be used to set your default locale and encoding scheme
# struts.locale=en_US
struts.i18n.encoding=UTF-8

可以看到struts2的默认的编码是UTF-8了,我们只要把它该成 gb2312就解决了我们的中文乱码问题了,那我们怎么该呢?是在默认的struts-default.properties里该吗?答案是NO, 我们只需在WEB-INF/classes目录下新建一个名为struts.properties文件就可以了,它的配置就会自动的去覆盖默认的配置(配置如下:)。

struts.properties
struts.i18n.encoding=gb2312

然后发布到tomcat上,在浏览器上输入http://localhost:8080/您的web应用名/helloworld.jsp就完成一个struts2式的helloworld了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: