struts2环境搭建和第一个程序
环境搭建
项目目录
导入依赖jar包,如上图lib目录所示。
不同的版本可能会不一样,没关系在tomcat启动时,如果报错java.lang.ClassNotFoundException,我们可以按照错误提示添加相应jar包。
在web.xml中配置struts2过滤器
将Struts2所带的过滤器org.apache.struts2.dispatcher.FilterDispatcher配置到工程的web.xml文件中,默认情况下,该过滤器拦截请求字符串中以.action结尾的请求,并将该请求委托给指定的Action进行处理。
在web.xml加入下面代码
<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>
注:可以在filter元素中加入<init-param>子元素来设定struts.xml配置文件的路径。若设置了<param-name>config</param-name>参数,那struts-default.xml等原来struts2默认加载的文件也要手动指定,否则不会自动加载。
struts-default.xml的路径在struts2-core-2.x.x jar包底下
编写一个struts小程序的步骤
1.创建一个类来存储欢迎消息(模型)
2.创建一个服务器页面呈现消息(视图)
3.创建一个页面提交用户请求参数(表单)
4.创建一个Action类来控制用户之间的互动,模型和视图(控制器)
5.创建一个映射(struts.xml)来描述Action类和视图的关系。
1.存储消息MessageStore.java
package hello;
public class MessageStore {
     private String message;
        public MessageStore() {
            setMessage("Hello Struts User");
        }
        public String getMessage() {
            return message;
        }
        public void setMessage(String message) {
            this.message = message;
        }
        public String toString(){
            return message;
        }
}
2.呈现消息Hello.jsp
在这里简单运用一些struts标签,取得action的属性值,简化信息的显示。在这之前,我们需要引入struts标签库
<%@ taglib prefix="s" uri="/struts-tags" %>
struts2属性标记为<s:property>,主要有下面一些用法。
1.显示Action中的属性值:<s:property value="属性名" />
2.显示字符串,使用单引号:<s:property value="'字符串'" />
3.显示默认值,Action中找不到指定的属性时,显示default属性的值:<s:property value="属性名" default="默认值" />
4.解析HTML字符串,escape默认值为true,直接输出字符串,escape设为false时,解析HTML字符串:<s:property value="'<font color=\"red\">Red</font>'" escape="false" />
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h2><s:property value="MessageStore" /> ${sessionScope.user}</p></h2>
<p>Number of visit this site: <s:property value="helloCount" /> times!</p>
</body>
</html>
3.提交请求index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Basic Struts 2 Application - Welcome</title>
</head>
<body>
<h1>Welcome To Struts 2!</h1>
<s:form action="hello">
<s:textfield name="user" label="userName"/>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>
4.处理用户请求HelloAction.java
HelloAction继承ActionSupport,充当控制器的角色,用于:
1.接受用户的请求参数
2.处理用户请求(或者调用逻辑处理)
3.返回String类型的结果,告诉Struts要呈现什么的视图。
接受请求参数
在action中设置参数属性,添加getter和setter方法,让action自动填充,并做恰当的类型转化。
处理请求
我们可以在execute方法中处理用户的请求,直接进行处理请求参数或者调用service的方法。该方法有一个String类型的返回值,告诉Struts应该将什么视图返回给用户。
package hello; import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport { private static final long serialVersionUID = 1L;
private static int helloCount = 0;
private MessageStore messageStore;
private String user;
public String execute() throws Exception {
messageStore = new MessageStore() ;
helloCount++;
ActionContext.getContext().getSession().put("user", user);
return SUCCESS;
} public MessageStore getMessageStore() {
return messageStore;
} public void setMessageStore(MessageStore messageStore) {
this.messageStore = messageStore;
} public String getUser() {
return user;
} public void setUser(String user) {
this.user = user;
} public int getHelloCount() {
return helloCount;
} public void setHelloCount(int helloCount) {
this.helloCount = helloCount;
}
}
5.struts.xml配置
我们将在struts.xml定义处理结果字符串和资源之间的映射关系,即定义action的execute方法返回的字符串所对应的视图。
在工程类路径下创建struts.xml文件,这是Struts2的配置文件,在struts.xml文件中可以配置Action、Bean、Interceptor等组件。
<?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>
<constant name="struts.devMode" value="true" />
<package name="basicstruts2" extends="struts-default">
<action name="hello" class="hello.HelloAction" method="execute">
<result name="success">/Hello.jsp</result>
</action>
</package>
</struts>
注:WEB应用程序的类路径是指WEB-INF/classes目录,在Eclipse中,创建在src目录下的文件最终发布后会自动复制到WEB-INF/classes目录下。
代码清单3中涉及到很多标签,以下是简单的解释:
| 
 标签名称  | 
 说明  | 
| 
 include  | 
 包含其他xml文件,在示例中,这意味着struts.xml可以访问定义在struts-default.xml文件中的组件。 该元素可以使得Struts2定义多个配置文件,“分而治之”。 要注意的是,任何一个struts2配置文件都应该和struts.xml有相同的格式,包括doctype,并且可以放在类路径下的任何地方。  | 
| 
 package  | 
 为Action或截拦器分组。 name:名称,必填项,名称自定义,但不能相同。方便别的package引用。 extends:package能继承其他的package,即通过该属性实现,值为另一个package的name。 在示例中,extends =”struts-default”是从struts-default.xml中继承的。  | 
| 
 action  | 
 定义Action,name属性为访问时用到的名称,class属性是Action的类名。  | 
| 
 result  | 
 根据Action的返回值定义页面导航。 Action的预定义的返回值有: String SUCCESS = "success"; String NONE = "none"; String ERROR = "error"; String INPUT = "input"; String LOGIN = "login"; 比如,当Action返回SUCCESS时希望转到ok.jsp页面,则可以这样写: <result name="success">ok.jsp</result> 其中,name的缺省为success。  | 
源码下载
我已经将工程代码打包(lib下没有导入jar包)
struts2环境搭建和第一个程序的更多相关文章
- 1. React介绍 React开发环境搭建 React第一个程序
		
什么是 React React 是 Facebook 发布的 JavaScript 库,以其高性能和独特的设计理念受到了广泛关注. React的开发背景 Faceboo ...
 - Go语言入门(一)特性、安装、环境搭建、第一个程序等
		
Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮 ...
 - 最新版ssh hibernate spring struts2环境搭建
		
最新版ssh hibernate spring struts2环境搭建 最新版spring Framework下载地址:spring4.0.0RELEASE环境搭建 http://repo.sprin ...
 - 第3章 Struts2框架--1、Struts2环境搭建
		
第3章 Struts2框架--1.Struts2环境搭建 搭建步骤: 1.从下载http://struts.apache.org 没找到Struts2.3.16版,就下载了2.3.29 2.拷贝后解压 ...
 - 小白的springboot之路(一)、环境搭建、第一个实例
		
小白的springboot之路(一).环境搭建.第一个实例 0- 前言 Spring boot + spring cloud + vue 的微服务架构技术栈,那简直是爽得不要不要的,怎么爽法,自行度娘 ...
 - Cesium入门2 - Cesium环境搭建及第一个示例程序
		
Cesium入门2 - Cesium环境搭建及第一个示例程序 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 验 ...
 - 【SSH】 之  Struts2环境搭建及简单应用开发
		
在上一篇文章中,我们一起了解了一下struts2的工作机制原理,接下来让我们进行一下简单应用的开发 (一)配置环境 1.建立web项目 2.导入jar包 其中struts2中有很多jar包,我们不需要 ...
 - Eclipse环境搭建并且运行wordcount程序
		
一.安装Hadoop插件 1. 所需环境 hadoop2.0伪分布式环境平台正常运行 所需压缩包:eclipse-jee-luna-SR2-linux-gtk-x86_64.tar.gz 在Linu ...
 - visual2017专业版MFC编程环境搭建及第一个MFC程序的创建
		
1.MFC介绍及环境搭建 MFC全程为Microsoft Foundation class Library,即微软的基本类库,MFC实际上是一个庞大的文件库,它由指向文件和源文件组成. 首先,打开vi ...
 
随机推荐
- python【第二十篇】Django表的多对多、Ajax
			
1 创建多对多表的方式有两种 1.1 方式一:自定义关系表 class Host(models.Model): nid = models.AutoField(primary_key=True) hos ...
 - PYTHON 获取机器硬件信息及状态
			
#!/usr/bin/env python # encoding: utf-8 from optparse import OptionParser import os import re import ...
 - 问自己----也是自己该怎么走的路(phper)
			
1.首先看了PHP的源码API函数,对于许多口水仗的争论一笑而过,只是停留在脚本级别上的什么效率,安全...之争完全就是无稽之谈,没有深入理解API,所有的争论都是臆测和不科学的态度.你做了吗? 2. ...
 - 例行性工作排程 (crontab)
			
1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式: ...
 - SQL 各种连接:内连接,外连接(左外,右外,完全外)
			
在讲述之前,假设有如下两个表EMP, DEPT, 并且他们数据如下:
 - python学习之---生成器
			
通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含1000万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元 ...
 - BZOJ 1640: [Usaco2007 Nov]Best Cow Line 队列变换
			
Description FJ打算带着他可爱的N (1 ≤ N ≤ 2,000)头奶牛去参加"年度最佳老农"的比赛.在比赛中,每个农夫把他的奶牛排成一列,然后准备经过评委检验. 比赛 ...
 - java虚拟机运行机制
			
转自java虚拟机运行机制 首先简单阐述下解释型语言和编译型语言的联系与区别. 编译型语言是通过编译器将程序编译成目标机器所能识别的机器码,而解释型语言不需要编译过程.由该语言的解释器读取脚本,按照语 ...
 - 6,render的一些概念和可用库
			
一,概念解释 什么是渲染?这是高大上的说法,翻译成正常语言,就是把图像缓冲区的数据显示到屏幕的过程,就是渲染. 原理说白了很简单,但实际操作中有太多因素需要考量. OS/硬件提供的加速机制/解码后图像 ...
 - 網站SSL加密原理簡介(2张图,握手有9个步骤,解释的很清楚)
			
Secure Socket Layer說明 SSL是Secure Socket Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸.最早是Netscape公司所提出,SSL的目 ...