微信公众号:compassblog

欢迎关注、转发,互相学习,共同进步!

有任何问题,请后台留言联

1、Struts2常量配置

(1)、Struts2默认常量配置文件路径,如下图:

(2)、Struts2常量配置方式:以配置国际化字节编码UTF-8为例

方式1:在struts.xml文件中配置

<constant name="struts.i18n.encoding" value="UTF-8"></constant>

方式2:在src下创建struts.properties文件配置

文件具体路径如下图:

文件配置代码为:

struts.i18n.encoding=UTF8

方式3:在项目的web.xml文件中配置

  <context-param>
     <param-name>struts.i18n.encoding</param-name>
     <param-value>UTF-8</param-value>
 </context-param>

(3)、Struts2配置文件加载顺序:

  • defalut.properties:首先加载默认配置

  • struts.xml:其次加载Action及自己的常量配置

  • struts.properties:第三加载文件中的常量配置

  • web.xml:最后加载核心过滤器及自己的常量的配置

2、Struts2中Action类的书写方式:

方式1:直接创建一个类

package com.struts2.action;

//创建一个POJO类:不继承任何父类,不实现任何接口
public class Demo1 {
   //具体的方法
}

方式2:创建一个类实现Action接口

package com.struts2.action;

import com.opensymphony.xwork2.Action;

//实现一个Action接口
// 覆写excute方法,提供action方法的规范
// Action接口预置了一些字符串,以在返回结果时使用
public class Demo2 implements Action {    @Override
   public String execute() throws Exception {
       //具体代码实现
       return null;
   } }

方式3:创建一个类继承ActionSupport类

package com.struts2.action;

import com.opensymphony.xwork2.ActionSupport;

//该类已经实现了Validateable, ValidationAware, TextProvider, LocaleProvider接口
//当项目需要使用这些接口时,不需要自己来实现
public class Demo3 extends ActionSupport{
   //具体方法
}

3、通过form表单测试Struts2应用小实例

(1)、新建项目ExamplePeoject,导入所需要的jar包,搭建Struts2开发环境,如下图:

(2)、在WebContent目录下分别建一个index.jsp访问文件、success.jsp跳转文件、failure.jsp跳转文件,具体代码如下:

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>首页</title>
</head>
<body>
   <h1>Struts2项目测试实例</h1>
   <form action="${pageContext.request.contextPath}/example" method="post">
       <table>
           <tr>    
               <td>输入测试内容:<input type="text" name="content" id="content"></td>
               <td><input type="submit" value="点击测试"></td>
           </tr>
       </table>
   </form>
</body>
</html>

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>跳转页</title>
</head>
<body>
   <h1>页面成功跳转,Struts2实例项目测试成功!</h1>
</body>
</html>

failure.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>跳转页</title>
</head>
<body>
   <h1>页面跳转成功,但输入内容不正确!</h1>
</body>
</html>

(3)、配置struts.xml文件,具体代码如下:

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
   "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
   <!-- 默认字符编码  -->
   <constant name="struts.i18n.encoding" value="UTF-8"></constant>    <package name="test" namespace="/" extends="struts-default" >        <action name="example" class="com.struts2.action.ExampleAction" method="test" >
           <result name="success">/success.jsp</result>
           <result name="failure">/failure.jsp</result>
       </action>
   </package>
</struts>

(4)、新建Action类ExampleAction.java,具体代码如下:

ExampleAction.java

package com.struts2.action;

import com.struts2.domain.Content;

public class ExampleAction {
   //定义内容属性
   private String content;    public String getContent() {
       return content;
   }    public void setContent(String content) {
       this.content = content;
   }    public String test(){        //获取客户端内容,并进行内容判断
       if(getContent()!=null){
           if(getContent().equals("Struts2"))
               return "success";
       }
       return "failure";
   }
}

(5)、发布项目到Tomcat容器,然后到浏览器地址栏测试,结果如下:

跳转到首页:

输入Struts2进行测试:

输入Struts进行测试:

(6)、该实例项目访问流程,如图所示:

 

本项目运行环境:jdk1.7、Tomcat7.0

关注微信公众号compassblog,后台回复 “Struts2系列二” 获取本项目源码

本系列后期仍会持续更新,欢迎关注!

如果你认为这篇文章有用,欢迎转发分享给你的好友!

本号文章可以任意转载,转载请注明出处!

您可能还喜欢:

扫码关注微信公众号,了解更多

【SSH框架】之Struts2系列(二)的更多相关文章

  1. struts2系列(二):struts2参数传递错误、struts2的输入错误验证

    一.struts2参数传递错误 1. 基本数据类型的传递最好使用包装类,原因是struts 2.1之后使用基本数据类型如果参数为空会报错2. 日期参数的传递最好定义一个区域的属性(定义locale), ...

  2. 搭建SSH框架整合Struts2和Spring时,使用@Autowired注解无法自动注入

    © 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述: 搭建SSH框架,在进行Struts2和Spring整合时,使用Spring的@Autowired自动注入失败,运行报错java.lan ...

  3. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:SSH框架(Struts2+Spring+Hibernate)搭建整合详细步骤

    在实际项目的开发中,为了充分利用各个框架的优点,通常都会把 Spring 与其他框架整合在一起使用. 整合就是将不同的框架放在一个项目中,共同使用它们的技术,发挥它们的优点,并形成互补.一般而言,在进 ...

  4. SSH框架之Struts2第一篇

    1.2 Struts2的概述 : Struts2是一个基于MVC设计模式的WEB层的框架. 1.2.1 常见web层框架 Struts1,Struts2,WebWork,SpringMVC Strut ...

  5. SSH框架学习------struts2前后台传值(二)

    struts2的Action类一般都会继承(extends)ActionSupport类(Action类,即实现action的类)1.前传后:jsp里<input type="text ...

  6. Java框架之Struts2(二)

    一.Action 配置说明 //请求的直接转发 <package name="packageUser" namespace="" extends=&quo ...

  7. SSH框架之hibernate《二》

    Hibernate第二天     一.hibernate的持久化类和对象标识符         1.1持久化类的编写规范             1.1.1什么是持久化类:               ...

  8. SSH框架之Struts2第二篇

    1.2 知识点 1.2.1 Struts2的Servlet的API的访问 1.2.1.1 方式一 : 通过ActionContext实现 页面: <h1>Servlet的API的访问方式一 ...

  9. 框架SpringMVC笔记系列 二 传值

    主题:SpringMVC(第一节中再回顾复习一次) 学习资料参考网址: 1.http://www.icoolxue.com 2.http://haohaoxuexi.iteye.com/blog/13 ...

  10. SSH框架入门学习之二(spring)

    Spring也是一个开源框架,我在学习Spring的时候,认为最重要的几点是:IOC(控制反转).AOP(面向切面)和容器概念. 详细的教程还请大家去看网上的视频,这里贴一个小Demo以供学习. (前 ...

随机推荐

  1. JavaScript函数声明提升

    首先,JavaScript中函数有两种创建方式,即函数声明.函数表达式两种. 1.函数声明. function boo(){ console.log(123); } boo() 2.函数表达式. va ...

  2. 小白的Python之路 day5 configparser模块的特点和用法

    configparser模块的特点和用法 一.概述 主要用于生成和修改常见配置文件,当前模块的名称在 python 3.x 版本中变更为 configparser.在python2.x版本中为Conf ...

  3. memcached经典问题和现象

    缓存刷新时间集中问题 某个缓存失效了,导致其他节点的缓存命中率下降, 缓存中缺失的数据 去数据库查询.短时间内,会造成数据库服务器崩溃 需要将缓存失效时间离散分布在访问量比较低的时间段 multige ...

  4. Switch 语句

    如果您希望有选择地执行若干代码块之一,请使用 Switch 语句. 使用 Switch 语句可以避免冗长的 if..elseif..else 代码块. 语法 工作原理: 对表达式(通常是变量)进行一次 ...

  5. base64是啥原理

    Base64是一种基于64个可打印字符来表示二进制数据的表示方法.由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符.三个字节有24个比特,对应于4个Base64单元,即3个字节可表 ...

  6. LAMP LNMP 和 LNMPA

    LAMP指的是:Linux+Apache+MySQL+Perl/PHP/Python LAMP是一个缩写,它指一组通常一起使用来运行动态网站或者服务器的自由软件: Linux,操作系统:  Apach ...

  7. 基于TI CC2650的IPv6 over BLE(BLEach) demo

    虽然BLE 5.0协议理论上已经开始支持IPv6了,但是目前市面上还没有可用的实现IPv6通信的BLE产品. 最近在网上看到一个开源的基于contiki系统,在CC2650上实现的IPv6 over ...

  8. Xcode 单元测试

    项目创建后自动创建的单元测试文件夹, 文件夹名为项目名+tests, xcode6后貌似没有选择是否添加测试target的选择了. 默认生成的如下图 提供的断言如下 typedefNS_ENUM(NS ...

  9. mybatis实战教程二:多对一关联查询(一对多)

    多对一关联查询 一.数据库关系.article表和user表示多对一的关系 CREATE TABLE `article` ( `id` ) NOT NULL AUTO_INCREMENT, `user ...

  10. python_如何对迭代器进行切片操作

    案例: 对于某个文件,我只想读取到其中100~200行之间的内容,是否可以通过切片的方式进行读取? 我想: f = open() f[100:200] 可行? 如何解决这个问题? 方法1: 全部读取到 ...