【Struts】Struts框架配置详解
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框架配置详解的更多相关文章
- java日志框架系列(3):logback框架配置详解
1.Logback配置 1.配置步骤及默认配置 logback即可以通过编程式配置,也可以通过xml的形式配置. logback配置步骤: 1. 尝试在 classpath 下查找文件 logback ...
- SpringMVC 框架系列之组件概述与配置详解
在上一篇文章 SpringMVC 框架系列之初识与入门实例 的实例中,我们已经知道,SpringMVC 框架是一个 web 层的框架,本篇文章就详细解释一下 SpringMVC 框架具体文件的配置以及 ...
- (网页)Java日志记录框架Logback配置详解(企业级应用解决方案)(转)
转自CSDN: 前言 Logback是现在比较流行的一个日志记录框架,它的配置比较简单学习成本相对较低,所以刚刚接触该框架的朋友不要畏惧,多花点耐心很快就能灵活应用了.本篇博文不会具体介绍Logbac ...
- Struts2学习笔记二 配置详解
Struts2执行流程 1.简单执行流程,如下所示: 在浏览器输入请求地址,首先会被过滤器处理,然后查找主配置文件,然后根据地址栏中输入的/hello去每个package中查找为/hello的name ...
- Spring学习 6- Spring MVC (Spring MVC原理及配置详解)
百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...
- struts2-环境搭建-访问流程-配置详解-常量配置-类详解
1 struts2概述 1.1 概念 1.2 struts2使用优势 自动封装参数 参数校验 结果的处理(转发|重定向) 国际化 显示等待页面 表单的防止重复提交 struts2具有更加先进的架构以 ...
- Apache2.2+Tomcat7.0整合配置详解
一.简单介绍 Apache.Tomcat Apache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,可以在 Windows.Unix.Lin ...
- Spark log4j日志配置详解(转载)
一.spark job日志介绍 spark中提供了log4j的方式记录日志.可以在$SPARK_HOME/conf/下,将 log4j.properties.template 文件copy为 l ...
- struts2基本配置详解2
接上篇struts2基本配置详解,还有一些配置没有讲到,下面将继续. struts.xml <package name="com.amos.web.action" names ...
随机推荐
- 【题解】ADAGRAFT - Ada and Graft [SP33331]
[题解]ADAGRAFT - Ada and Graft [SP33331] 传送门:\(\text{Ada and Graft}\) \(\text{[SP33331]}\) [题目描述] 给出一颗 ...
- java架构之路-(JVM优化与原理)JVM的运行时内存模型
还是我们上次的图,我们上次大概讲解了类加载子系统的执行过程,验证,准备,解析,初始化四个过程.还有我们的双亲委派机制. 我们这次来说一下运行时内存模型.上一段小代码. public class Mai ...
- linq,sqlmethods,like
LINQ to SQL will translate .NET methods in this manner: text.StartsWith(...) = LIKE ...% text.Contai ...
- ASP.NET Core 开发人员异常页面
UseDeveloperExceptionPage 中间件 我们谈谈在 Startup 类的 Configure()方法中以下代码: public void Configure(IApplicatio ...
- Ubuntu1404配置jdk-12.0.2并安装Android Studio教程
最近在学习Android Studio 移动应用程序开发,但Android Studio好像对win10不太友好,所以小帅想在Ubuntu上安装Android Studio.为此小帅还去网上找了相关教 ...
- 删除Win10远程桌面中的无用的IP列表
运行中,输入regedit,然后找到这个位置(也可在任务管理器的地址栏中,直接输入下面的地址),便可删除远程桌面中列出的一些无用的IP地址. 计算机\HKEY_CURRENT_USER\Softwar ...
- kuangbin专题简单搜索题目几道题目
1.POJ1321棋盘问题 Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形 ...
- 华为手机 android8.0APP更新时出现安装包解析异常的提示及安装闪退(无反应)问题
在做android app升级更新时遇到几个问题,我用的测试机是华为V10 系统为8.0 一.安装闪退(无反应) 解决办法: 只要在Mainfest.xml 中加入权限编码即可解决 <uses- ...
- element-ui的form表单样式改动
造成下面样式错乱是下面自带的css样式,原本打算通过样式重写在组件内的style,发现下面相应的元素是出于封装情况的,无论样式重写在组件还是在公共样式均不能很好的解决,因为跳转到该页面时都要刷新一次, ...
- 多任务学习Multi-task-learning MTL
https://blog.csdn.net/chanbo8205/article/details/84170813 多任务学习(Multitask learning)是迁移学习算法的一种,迁移学习可理 ...