Struts 2框架搭建(Hello World)

来源:互联网 发布:ubuntu adb版本查看 编辑:程序博客网 时间:2024/06/05 11:04

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

   

struts2jar

 

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

如图:sdf

  

基本的struts2的应用所需的jar

 

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

 

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

这样就我们就给我们的应用配置好了struts2的分发器,(然后在任意请求就通过FilterDispatcher来分发每一个请求),

FilterDispatcher到底是怎样找每一个struts2Action呢?下面来我们来了解一下,

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 返回的字符串来与<resultname属性来确定 要调转到那个资源

明白了上面的配置我们来看看Struts2Action 是怎么写的吧!

 

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式的helloworldName属性是用户输入的姓名,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页面把用户输入的姓名,和信息提交个这个名为helloaction(<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页面把用户输入的信息显示出来了。在我们的页面的编码都是用的GB2312struts2的默认编码是utf-8,这样我们的页面就可能产生乱码!那我们怎么解决这个问题呢!下面我们讲解struts2的运行时配置!

struts2的运行时配置

   struts2的分发层是filter那它的每个配置都是在FilterDispatcher类中做的,FilterDispatcherAction的每一类配置分成多个配置文件而每一个配置文件也相应的提供了默认的配置,这样很灵活也减轻了复杂度,那我们来讲解一下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了。