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 HelloWorld

时间: 2024-10-27 12:19:13

struts2环境搭建和第一个程序的相关文章

Go语言入门(一)特性、安装、环境搭建、第一个程序等

Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧. Go语言特性 自动垃圾回收 内存自动回收,再也不需要开发人员管理内存 只需要new分配内存,不需要释放 具有更丰富的内置类型 Go语言"不仅支持几乎所有语言都支持的简单内置类型(比如整型和浮点型等)外,还支持一些其他的高级类型,比如字典类型map.数组切片(Slice). 支持函数多返回值 在

Linux下C++的编程——开发环境搭建与第一个程序

上一篇文章Linux下C++的编程--开偏介绍中我们已经介绍了GUN.GCC.G++等一些重要的概念,现在应该开始动手实践了! 开发工具的安装 环境 Distributions版本:CentOS 6.7 Linux内核片:2.6.32-573.3.1.el6.i686 一般Linux安装完之后默认就已经安装了GCC(GNU Compiler Collection),你可以查看一下gcc和g++的版本号检查gcc和g++是否已经安装. [luowf@luoweifu ~]$ gcc -v gcc

Java环境搭建和第一个程序

Java环境搭建 1.安装java版本后,设置环境变量.(我的电脑-属性-高级系统设置-"高级"选项卡-环境变量)    在系统变量中分别新建JAVA_HOME"."PATH"和"CLASSPATH"变量 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0_79 变量名:PATH 变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 变量名:CLASSPATH 变

Python介绍、环境搭建、第一个程序

Python介绍 特点 优雅.明确.简单. 适合领域 1. Web网站和各种网络服务 2. 系统工具和脚本 3. 作为"胶水"语言把其他语言开发的模块包装起来方便使用 和其他语言对比 开发环境搭建 到https://www.python.org/downloads/release/python-2710/ 下载对应系统下的安装程序.  链接:http://pan.baidu.com/s/1pJws98v 密码:8y3j (Linux下自带python,直接使用即可.自动补齐需安装ipy

1 . Struts2环境搭建

这几天突然听领导说要做SSH框架的项目,以前都是用.net mvc的, 有点捉鸡,好消息是会有一段的学习时间,为了速成,只能从Struts2看起,只求能最快着手做项目. 环境:IDE  :Eclipse Java EE IDE for Web Developers.   已经安装了Tomcat7插件. Struts版本:2.3.24.1 最基本的Structs2 需要的包有: : 最开始包里并没有引用 commons-lang3-3.1.jar这个包,只用了struts-2.3.24.1 里面解

Struts2环境搭建以及helloworld编写

Struts是一个经典的Java Web开发框架.现在我们编写一个简易的helloworld界面.   Struts的环境搭建比较简单,加载相应的jar包即可. 我这里的开发环境是windows7 + Myeclipse10.0 Struts2采用的是2.2.1.1版本   1.加载Struts2的必备jar包,我这里是6个,还有另外的两个jar文件. 这六个分别是: 1.commons_fileupload-1.2.1.jar 2.commons-io_1.3.2.jar 3.commons-

openGL+VS2012 环境搭建和实现简单程序

在学习cocos2dx时,其底层就用到了OpenGL,因此,想要能够精通cocos2dx,还是需要了解OpenGL的. 本着这个目的,开始搭建OpenGL的环境,并进行学习. OpenGL环境的搭建相对比较简单,这里就简单概述一下. 1. 下载glut库 glut库地址为:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut全称为:OpenGL Utility Toolkit,也就是OpenGL应用工具包,它

Android开发环境搭建与HelloWorld小程序

Android简介 一.本节知识点概述 1.Android概述 什么是Android?Android的发展. Android的四层体系架构 Android的应用开发体系 2.环境搭建resource Android集成开发环境下载与解压 Android集成开发环境目录说明 Eclipse工具的使用说明 AVD创建参数说明 启动AVD与DDMS说明 3.第一个Android项目HelloWord Eclipse中创建Android项目 Android项目目录说明 运行Android项目 4.扩展知

【SSH】 之 Struts2环境搭建及简单应用开发

在上一篇文章中,我们一起了解了一下struts2的工作机制原理,接下来让我们进行一下简单应用的开发 (一)配置环境 1.建立web项目 2.导入jar包 其中struts2中有很多jar包,我们不需要全部引用,因为很多jar涉及第三方jar包.如果我们只导入struts里面的而没有导入第三方jar包所依赖的jar包,就会报错,影响开发 3.配置web.xml [html] view plain copy print? <?xml version="1.0" encoding=&q