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. CentOS7/Ubuntu18系统时间同步ntp(转载)

    转自  https://blog.csdn.net/u010226454/article/details/80896959 ---centos7.2上搭建ntp服务器,并实现时间同步 对于容器编排系统 ...

  2. Python - 条件控制、循环语句 - 第十二天

    Python 条件控制.循环语句 end 关键字 关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符,实例如下: Python 条件语句是通过一条或多条语句的执行结果(True 或 ...

  3. 2019前端UI框架排行榜

    一.Mint UI 流行指数:★★★★ Mint UI是 饿了么团队开发基于 Vue.js 的移动端UI框架,它包含丰富的 CSS 和 JS 组件,能够满足日常的移动端开发需要. 官网:https:/ ...

  4. m3u8的blob格式视频在线下载

    有时候我们希望在在线观看视频的同时将对应的视频下载下来,研究了很多方式,最终发现使用ffmpeg这个工具可以很好完成m3u8格式. 具体方法就是执行: ffmpeg -i https://cdn-ho ...

  5. CSS函数大全

    CSS函数(方法)参考 CSS函数用作各种CSS属性的值. 函数 描述 attr() 返回所选元素的属性值 calc() 允许您执行计算以确定CSS属性值 cubic-bezier() 定义Cubic ...

  6. 斗鱼刷弹幕js代码

    对于一个网络喷子(like me)来说,喷人必须高效. var script=document.createElement("script"); script.type=" ...

  7. C++智能指针解析

    前言 在C++程序中,内存分为三种静态内存.栈内存.堆内存.其中静态内存和栈内存由系统进行维护,而堆内存则是由程序员自己进行维护,也就是我们在new和delete对象时,这些对象存放的区域.任何有C+ ...

  8. 结对编程(-java-实现)

    一 .Github项目地址:https://github.com/mushan520/Four-fundamental-rules-java.git                           ...

  9. 查看 JVM 默认参数

    -XX:+PrintFlagsFinal 可以获取所有可设置参数及值 获取 JVM 默认 Xss 大小 java -XX:+PrintFlagsFinal -version | grep Thread ...

  10. 通过fiddler抓包,用jmeter实现multipart/form-data类型请求

    Fiddler抓包结果如下: 1.multipart/form-data的基础方式是post,也就是说通过post组合方式来实现的.2.multipart/form-data于post方法的不同之处在 ...