【SSH框架】之Struts2系列(二)
微信公众号: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系列(二)的更多相关文章
- struts2系列(二):struts2参数传递错误、struts2的输入错误验证
一.struts2参数传递错误 1. 基本数据类型的传递最好使用包装类,原因是struts 2.1之后使用基本数据类型如果参数为空会报错2. 日期参数的传递最好定义一个区域的属性(定义locale), ...
- 搭建SSH框架整合Struts2和Spring时,使用@Autowired注解无法自动注入
© 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述: 搭建SSH框架,在进行Struts2和Spring整合时,使用Spring的@Autowired自动注入失败,运行报错java.lan ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:SSH框架(Struts2+Spring+Hibernate)搭建整合详细步骤
在实际项目的开发中,为了充分利用各个框架的优点,通常都会把 Spring 与其他框架整合在一起使用. 整合就是将不同的框架放在一个项目中,共同使用它们的技术,发挥它们的优点,并形成互补.一般而言,在进 ...
- SSH框架之Struts2第一篇
1.2 Struts2的概述 : Struts2是一个基于MVC设计模式的WEB层的框架. 1.2.1 常见web层框架 Struts1,Struts2,WebWork,SpringMVC Strut ...
- SSH框架学习------struts2前后台传值(二)
struts2的Action类一般都会继承(extends)ActionSupport类(Action类,即实现action的类)1.前传后:jsp里<input type="text ...
- Java框架之Struts2(二)
一.Action 配置说明 //请求的直接转发 <package name="packageUser" namespace="" extends=&quo ...
- SSH框架之hibernate《二》
Hibernate第二天 一.hibernate的持久化类和对象标识符 1.1持久化类的编写规范 1.1.1什么是持久化类: ...
- SSH框架之Struts2第二篇
1.2 知识点 1.2.1 Struts2的Servlet的API的访问 1.2.1.1 方式一 : 通过ActionContext实现 页面: <h1>Servlet的API的访问方式一 ...
- 框架SpringMVC笔记系列 二 传值
主题:SpringMVC(第一节中再回顾复习一次) 学习资料参考网址: 1.http://www.icoolxue.com 2.http://haohaoxuexi.iteye.com/blog/13 ...
- SSH框架入门学习之二(spring)
Spring也是一个开源框架,我在学习Spring的时候,认为最重要的几点是:IOC(控制反转).AOP(面向切面)和容器概念. 详细的教程还请大家去看网上的视频,这里贴一个小Demo以供学习. (前 ...
随机推荐
- JavaScript函数声明提升
首先,JavaScript中函数有两种创建方式,即函数声明.函数表达式两种. 1.函数声明. function boo(){ console.log(123); } boo() 2.函数表达式. va ...
- 小白的Python之路 day5 configparser模块的特点和用法
configparser模块的特点和用法 一.概述 主要用于生成和修改常见配置文件,当前模块的名称在 python 3.x 版本中变更为 configparser.在python2.x版本中为Conf ...
- memcached经典问题和现象
缓存刷新时间集中问题 某个缓存失效了,导致其他节点的缓存命中率下降, 缓存中缺失的数据 去数据库查询.短时间内,会造成数据库服务器崩溃 需要将缓存失效时间离散分布在访问量比较低的时间段 multige ...
- Switch 语句
如果您希望有选择地执行若干代码块之一,请使用 Switch 语句. 使用 Switch 语句可以避免冗长的 if..elseif..else 代码块. 语法 工作原理: 对表达式(通常是变量)进行一次 ...
- base64是啥原理
Base64是一种基于64个可打印字符来表示二进制数据的表示方法.由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符.三个字节有24个比特,对应于4个Base64单元,即3个字节可表 ...
- LAMP LNMP 和 LNMPA
LAMP指的是:Linux+Apache+MySQL+Perl/PHP/Python LAMP是一个缩写,它指一组通常一起使用来运行动态网站或者服务器的自由软件: Linux,操作系统: Apach ...
- 基于TI CC2650的IPv6 over BLE(BLEach) demo
虽然BLE 5.0协议理论上已经开始支持IPv6了,但是目前市面上还没有可用的实现IPv6通信的BLE产品. 最近在网上看到一个开源的基于contiki系统,在CC2650上实现的IPv6 over ...
- Xcode 单元测试
项目创建后自动创建的单元测试文件夹, 文件夹名为项目名+tests, xcode6后貌似没有选择是否添加测试target的选择了. 默认生成的如下图 提供的断言如下 typedefNS_ENUM(NS ...
- mybatis实战教程二:多对一关联查询(一对多)
多对一关联查询 一.数据库关系.article表和user表示多对一的关系 CREATE TABLE `article` ( `id` ) NOT NULL AUTO_INCREMENT, `user ...
- python_如何对迭代器进行切片操作
案例: 对于某个文件,我只想读取到其中100~200行之间的内容,是否可以通过切片的方式进行读取? 我想: f = open() f[100:200] 可行? 如何解决这个问题? 方法1: 全部读取到 ...