1.首先将所必须的Jar包放到项目的WebRoot/WEB-INF/lib目录下。

如果你没有这些Jar文件,你可以到Struts官网上下载:http://struts.apache.org/。因为经常会用到这些Jar包,因此我将Struts所需的Jar包进行了整理,你可以点击这里下载。

Struts所需Jar包下载:http://pan.baidu.com/s/1c0pdqTy

密码:jb2m

如果你想了解更多关于以上列出的Jar包的信息,你可以阅读我的另一篇文章:(MARK)

2.在web.xml中加入如下的Struts配置信息

 <!-- Struts框架的配置 开始 -->
<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>
<!-- Struts框架的配置 结束 -->

3.在src目录下创建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="default" namespace="/" extends="struts-default">
<action name="AS_sayHello" class="com.basestruts.action.AS_SayHelloAction"
method="execute">
<result name="success">/result.jsp</result>
<result name="input">/index.jsp</result>
</action> <action name="MD_sayHello" class="com.basestruts.action.MD_SayHelloAction"
method="execute">
<result name="success">/result.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>

主要属性说明:<package> --name:用于区别不同的package;必须是唯一的、可用的变量名;

<package> --namespace:空间名,不同功能的代码放在不同的空间里,使得配置文件层次更加清晰。空间名是调用action时输入路径的组成部分;

<package> --extends:继承其他的package,使得代码更加简洁。每个配置action的package都必须直接或间接继承struts-default这个系统默认的package

<action>  --name:用于在一个package里区别不同的action;必须是唯一的、可用的变量名;是调用action时输入路径的组成部分;

<action>  --class:action所在的路径(包名+类名);

       <action>  --method:action所调用的方法名;

调用action的路径为:namespace + action名。例如当我把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="default" namespace="/message" extends="struts-default">
<action name="AS_sayHello" class="com.basestruts.action.AS_SayHelloAction"
method="execute">
<result name="success">/result.jsp</result>
<result name="input">/index.jsp</result>
</action> <action name="MD_sayHello" class="com.basestruts.action.MD_SayHelloAction"
method="execute">
<result name="success">/result.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>

这时,如果我要调用名字为:AS_sayHello的action,那么我必须输入:message/AS_sayHello 才能正确访问到这个Action。

注意,这里不要写成"/message/AS_sayHello",最前面不用加左斜杠。

  在写result视图的时候,有这样两种写法:/WEB-INF/Hello.jsp和WEB-INF/Hello.jsp。这两种的区别你知道吗?/WEB-INF/Hello.jsp它会不计较你的namespace直接就去访问这个地方了。

但是如果是:WEB-INF/Hello.jsp,而你的命名空间又是/test.这样的话,它访问的就是:/test/WEB-INF/Hello.jsp,如果说不存在test,那么直接报错。由此可见,左斜杠的作用就是告诉Struts我要从根目录(WebRoot)开始算起。

4.编写Action处理类

编写的Action类最基本的应该继承ActionSupport类。如果要结合POJO使用,则应该实现ModelDriven接口。

但实际上你也不集成ActionSupport,但这样以来你的工作量便会直线上升,因为ActionSupport帮你做了很多通用的工作。(补充最基本的不继承任何类的Action例子)

所以一般情况下还是建议至少继承ActionSupport类。

下面用一个继承了ActionSupport的Action处理类作为例子:

 package com.basestruts.action;

 import com.opensymphony.xwork2.ActionSupport;
/**
* 通过直接在Action中声明参数进行参数传递
* @author chenyr
*
*/ public class AS_SayHelloAction extends ActionSupport { /** 名字 **/
private String name; /** 消息 **/
private String message; /** 传递到前台的消息(必须提供SET/GET方法) **/
private String sayHelloStr = ""; public String execute()
{
sayHelloStr = "读取不到前台消息!"; if(name != null && message != null)
{
sayHelloStr = name + "," + message;
} System.out.println(sayHelloStr); return SUCCESS;
} /* 省略name, message, sayHelloStr三个属性的SET/GET方法*/
}

前台页面用表单传递name, message参数。

 <%@page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=utf-8" %> <!-- 省略了其他代码 -->
<body>
<%-- 通过Struts传递参数,数据传递方式必须选择post,否则编码错误! --%>
<form action="message/MD_sayHello" method="post" >
<b>名字:</b><input type="text" id="name" name="name" /></br>
<b>消息:</b><input type="text" id="message" name="message"/></br>
<input type="submit" name="submit" value="问好"/>
</form>
</body>

注意:Struts传递数据时,必须将表单的method属性设为post,否则会出现编码错误!

结果页面result.jsp:

<body>
<h1>${sayHelloStr }</h1>
</body>

这是最基本的通过在Action中直接声明要接收的参数,并且声明SET/GET方法。还有另外一种是通过ModelDriven实现参数的传递,这种方式下Struts将所有的参数封装到了一个POJO类,使得Action文件代码更加简洁。

如果你想了解更多,可以阅读我的另外一篇博文:Struts中前后台参数传递的两种方式

小结:配置Struts框架的三个步骤为:

第一,加入Jar包;

第二,配置web.xml文件;

第三,创建并配置struts.xml文件;

第四,编写Action处理类。

【Struts】Struts框架配置详解的更多相关文章

  1. java日志框架系列(3):logback框架配置详解

    1.Logback配置 1.配置步骤及默认配置 logback即可以通过编程式配置,也可以通过xml的形式配置. logback配置步骤: 1. 尝试在 classpath 下查找文件 logback ...

  2. SpringMVC 框架系列之组件概述与配置详解

    在上一篇文章 SpringMVC 框架系列之初识与入门实例 的实例中,我们已经知道,SpringMVC 框架是一个 web 层的框架,本篇文章就详细解释一下 SpringMVC 框架具体文件的配置以及 ...

  3. (网页)Java日志记录框架Logback配置详解(企业级应用解决方案)(转)

    转自CSDN: 前言 Logback是现在比较流行的一个日志记录框架,它的配置比较简单学习成本相对较低,所以刚刚接触该框架的朋友不要畏惧,多花点耐心很快就能灵活应用了.本篇博文不会具体介绍Logbac ...

  4. Struts2学习笔记二 配置详解

    Struts2执行流程 1.简单执行流程,如下所示: 在浏览器输入请求地址,首先会被过滤器处理,然后查找主配置文件,然后根据地址栏中输入的/hello去每个package中查找为/hello的name ...

  5. Spring学习 6- Spring MVC (Spring MVC原理及配置详解)

    百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...

  6. struts2-环境搭建-访问流程-配置详解-常量配置-类详解

    1 struts2概述 1.1 概念  1.2 struts2使用优势 自动封装参数 参数校验 结果的处理(转发|重定向) 国际化 显示等待页面 表单的防止重复提交 struts2具有更加先进的架构以 ...

  7. Apache2.2+Tomcat7.0整合配置详解

    一.简单介绍 Apache.Tomcat Apache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,可以在 Windows.Unix.Lin ...

  8. Spark log4j日志配置详解(转载)

    一.spark job日志介绍    spark中提供了log4j的方式记录日志.可以在$SPARK_HOME/conf/下,将 log4j.properties.template 文件copy为 l ...

  9. struts2基本配置详解2

    接上篇struts2基本配置详解,还有一些配置没有讲到,下面将继续. struts.xml <package name="com.amos.web.action" names ...

随机推荐

  1. 【03】Nginx:location / root / alias

    写在前面的话 前面我们谈了 nginx 基础的 WEB 服务配置以及定制我们的日志显示格式,接下来我能更加详细的说说 server 字段. location 字段 在 Server 中,如果我们只是一 ...

  2. 使用Git Bash在码云上上传和下载代码

    前提是在码云上已经新建一个空的项目 1.新建一个目录,存放下载下来的项目,我在D盘新建了一个"gitspace"文件夹,用来存放下载下来的项目 2.进入刚刚新建的文件夹,即进入&q ...

  3. redis笔记3

    redis持久化机制 redis提供了两种持久化策略 RDB RDB的持久化策略: 按照规则定时将内存的数据同步到磁盘 snapshot redis在指定的情况下会触发快照 自己配置的快照规则 sav ...

  4. APS系统对制造企业到底有多重要?看完这5点你就明白了

    第一个问题:需要APS吗? APS是否重要,不能从其所体现的软件工具或系统角度来说,而应该从业务角度来说.对于制造工厂和车间的运行而言,计划是核心的业务.就如同那句俗话说的,没有规矩不成方圆,领军打仗 ...

  5. undefined reference to `BN_new'

    出现如下错误 undefined reference to `BN_CTX_new' undefined reference to `BN_new' undefined reference to `B ...

  6. NoSuchMethodError 常见原因及解决方法

    相 关 阅 读 导读 『StabilityGuide』是阿里多位阿里技术工程师共同发起的稳定性领域的知识库开源项目,涵盖性能压测.故障演练.JVM.应用容器.服务框架.流量调度.监控.诊断等多个技术领 ...

  7. sqlmap 注入的方法及技巧

    sqlmap 注入的方法及技巧 当给 sqlmap 这么一个 url 的时候,它会: 1.判断可注入的参数 2.判断可以用那种 SQL 注入技术来注入 3.识别出哪种数据库 4.根据用户选择,读取哪些 ...

  8. 3-14 Pandas绘图

      1.魔法指令:%matplotlib inline :数据画图 In [1]: %matplotlib inline import pandas as pd In [2]: import nump ...

  9. 关于Apache本地能访问外网不能访问的问题

    title: 关于Apache本地能访问外网不能访问的问题 date: 2018-08-05 19:22:12 tags: web --- 在配置apache和tomcat时,把它们都配置好,放到服务 ...

  10. Spring(003)-消费返回list的rest服务

    通过spring提供的RestTemplate就可以访问rest服务.首先需要创建一个RestTemplate,这个需要手动来创建bean @Configuration public class De ...