zoukankan      html  css  js  c++  java
  • Struts 2简单配置分析

    要配置Struts 2,首先先要有Struts 2的Jar包,可以去Struts的官网下载(http://struts.apache.org/),这里有3个GA版本可以选择下载,我选择的是最新的2.2.3.1版本。

    若你的硬盘空间比较大,建议下载struts-2.2.3.1-all.zip版本的,因为里面包含了Struts 2给我们的示例(非常有用)和许多文档。下载struts-2.2.3.1-all.zip完毕后,将其解压到一个文件夹下,解压后的样子:

    apps文件夹下,有struts 2提供给我们的示例,可以直接运行,在这些示例里面有大量我们需要的配置信息(特别对配置信息不熟悉的朋友)。

    docs文件夹下,有关于struts 2的一些文档说明。

    lib文件夹下,是开发struts 2需要的类库文件和依赖库文件

    src文件夹下,为struts 2的源代码,你可以使用IDE包含这个文件夹,这样你就可以在IDE里面看到Struts 2的源代码了 

       

    下面,就以一个简单不过的例子,说明怎么简单配置Struts 2,让其运行起来:

    程序的大致流程为:用户输入一个名字,Struts 2返回一个欢迎页面。

    首先,创建一个Java Web项目,我使用的是(MyEclipse 9.0的开发环境),我将项目命名为hello。

    第二步,将Struts 2的包导入到项目中,千万别把lib包里面的包全导入到项目中(大概77个jar文件....)那样虽然也可以让Struts 2运行起来,但是包含了大量现阶段用不到的包,最佳的做法是导入现阶段最需要的包,因为我的例子很简单不需要高级功能,所以只需要导入Struts 2支持最小的包就可以了,也许许多教程或书籍介绍的最小包与我们下载的版本不一样,那么要怎么准确无误的知道一个版本的最小包呢?这时候apps文件夹下的项目就起大作用了

     看到apps文件夹下有5个项目,选择"struts2-blank.war"项目,该项目名称为blank意思就是空的项目,就是刚好可以让Struts跑起来的最小配置,用解压软件(WinRAR之类)解压出来

    打开该解压文件夹下的"WEB-INF"文件夹:

    打开lib文件夹,里面包含了支持最小配置Struts 2的包,将里面的包导入到你的项目中,这时候你就可以使用基本的Struts 2功能。 

    第三步,在你的项目中找到"web.xml"文件,配置它,使用户发送给服务器的请求能够被Struts 2框架接收拦截

    对于对配置文件不熟悉的朋友来说,可能不知道应该怎么配置,这时候我们依然可以不用去翻开书籍和网上搜索资料,只需要打开我们刚刚解压的项目,在"struts2-blank.war"项目中找到web.xml文件,打开它可以看到

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_9" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Struts Blank</display-name>

    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    </welcome-file-list>

    </web-app>

    这就是在我们项目中web.xml文件需要配置的信息,你可以直接copy过去,完全没问题,我们连写代码的时间都省了(-_-!!我比较懒),但建议还是多敲几遍。下面解释一下这些标签的含义,filter标签,是用于定义一个过滤器的,filter-name为该过滤器的名称,可以任意起;filter-class为该过滤器使用什么类实现。filter-mapping标签,是过滤器的映射,filter-name表示使用哪一个过滤器,url-pattern表示要过滤什么类型的请求,"/*"表示所有请求。display-name标签和welcome-file-list标签没有什么大影响,你也可以不用他们。这些标签组合在一起后表示的全文信息为:将浏览器发来的所有请求,交给名为"struts2"的过滤器处理,该过滤器是由org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter类实现的,这样即实现了Struts 2框架全面接管Web请求的环境。

    第四步,创建接收数据的表单:

    <s:form action="welcome">
    <s:textfield name="username" label="Enter your name"></s:textfield>
    <s:submit value="submit"></s:submit>
    </s:form>

    注意,在使用Struts2标签库的时候,请再页面上加上对Struts2标签库的导入

    <%@ taglib prefix="s" uri="/struts-tags"%>

    第五步,创建接收数据的动作类:

    public class WelcomeAction extends ActionSupport
    {
    private static final long serialVersionUID = -6256745897215180249L;

    private String username;

    public String getUsername()
    {
    return username;
    }

    public void setUsername(String username)
    {
    this.username = username;
    }

    @Override
    public String execute()
    {
    return SUCCESS;
    }

    }

    第六步,创建接收数据成功的页面:

    <body>
    Welcome,<s:property value="username"/>
    </body>

    Struts2的标签库运用了强大的对象图导航语言(OGNL),这里只是展示一个问候语页面,里面的逻辑内容很多,有机会我会总结一下OGNL的知识点(当然本人水平有限,也许表达的不好或者不全面,到时候请谅解,大家一起学习嘛)。

    第七步,创建struts.xml配置文件

    又遇到了不熟悉的配置文件,这时候表示又可以偷懒了:) ,打开"struts2-blank.war"项目的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>

    <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
    <constant name="struts.devMode" value="false"/>

    <package name="default" namespace="/" extends="struts-default">

    <default-action-ref name="index"/>

    <global-results>
    <result name="error">/error.jsp</result>
    </global-results>

    <global-exception-mappings>
    <exception-mapping exception="java.lang.Exception" result="error"/>
    </global-exception-mappings>

    <action name="index">
    <result type="redirectAction">
    <param name="actionName">HelloWorld</param>
    <param name="namespace">/example</param>
    </result>
    </action>
    </package>

    <include file="example.xml"/>

    <!-- Add packages here -->

    </struts>

    这次,不能直接copy过来使用了-_-!!,我们最需要的是文档头部的dtd文件的声明,因为他实在难记,你可以将它保存在一个容易获取的地方,下次开发就不用再去找它了。该文档的其他部分大致展示了以struts.xml配置文件的大体样貌,你可以参照一下,里面许多标签我们这次并不会用到。也许你会奇怪里面的标签为什么叫这些名字,为什么不能叫其他名字,我为什么会知道其实我以前也很困惑,那些第一次开发的人怎么知道的,后面有个前辈告诉我了,其实那个dtd文件是可以下载下来看的,那里面说明了有什么标签可以用,该怎么用。下载地址就是声明字段那里的网址(http://struts.apache.org/dtds/struts-2.0.dtd )。下载下来大致成这模样:

    View Code

    看这个文档需要一定的正则表达式的基础,有兴趣的可以去看一看。

    了解了上面的知识后,创建我们自己struts.xml文件,还有一点要注意该文件需要创建在src目录下(使用IDE的情况下),不然需要创建在WEB-INF/classes目录下。

    <?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="welcomePackage" extends="struts-default">
    <action name="welcome" class="struts2.suxiaolei.action.WelcomeAction">
    <result name="success">/welcome_success.jsp</result>
    <result name="input">/welcome.jsp</result>
    </action>
    </package>
    </struts>

    package元素,作用类似于Java包的机制,他是用于分门别类的一个工具,extends属性如他的名字一样,它继承了struts-default这个包的所有信息,一般我们自己创建一个包最好都继承它,因为他为我们提供了绝大部分的功能,你可以在struts2-core的jar包中的struts-default.xml文件中找到这个包。action元素对应与你的表单,例如你的表单的action="welcome",那么该表单提交后就会将参数交予action的name="welcome"的实现类处理。result元素为action的结果,它由动作类返回的控制字段选择。

    最后,测试项目

    在浏览器中输入:http://localhost:8081/hello/welcome.jsp,获得如下界面

    输入一个名称"Tom",点"submit"按钮,结果如下:

    可以看到Struts 2已经成功运行了。

    还有一点,要是提交的是中文怎么办,下面先看看会是什么效果:

    可以看到中文变成看不懂的一串字符了,要解决这个问题可以查看org.apache.struts2包下的default.properties文件,该默认属性文件有一行表示国际化的属性

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

    你可以在你的struts.xml文件中的package标签下加入:

    <constant name="struts.i18n.encoding" value="gbk"></constant>

    重新启动服务器,浏览器输入: http://localhost:8081/hello/welcome.jsp

    IE效果:

    FireFox效果:

    Opera效果:

    貌似这个方法只有,IE才会有效果-_-!!

    原来还要把页面的编码方式改为gbk,默认的方式为"ISO-8859-1",这个不支持中文

    <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

    看看效果

    现在终于成功了!原来编码问题也是如此麻烦。。。,表述不好请见谅,若有错误欢迎指出。

  • 相关阅读:
    HDU Railroad (记忆化)
    HDU 1227 Fast Food
    HDU 3008 Warcraft
    asp vbscript 检测客户端浏览器和操作系统(也可以易于升级到ASP.NET)
    Csharp 讀取大文本文件數據到DataTable中,大批量插入到數據庫中
    csharp 在万年历中计算显示农历日子出错
    csharp create ICS file extension
    CSS DIV Shadow
    DataTable search keyword
    User select fontface/color/size/backgroundColor设置 字体,颜色,大小,背景色兼容主流浏览器
  • 原文地址:https://www.cnblogs.com/hdk1993/p/4354954.html
Copyright © 2011-2022 走看看