一.为Web应用增加Struts 2支持

下载和安装Struts 2步骤:

  1.   登录http://struts.apache.org/download.cgi站点,下载Struts 2的最新版,下载时有以下几个选项:
      • Full Distribution:下载Struts的完整版,通常建议下载该选项,该选项包括Struts2的实例应用,空示例应用,核心库,源代码和文档。
      • Example Applications:仅下载Struts2 的示例应用。
      • Essential Dependcies:仅下载Struts2的核心库。
      • Documentation:仅下载Struts2的相关文档
      • Source:下载Struts的全部源代码

      通常建议下载第一个选项 ,既下载Struts的完整版,将下载的文件解压,该文件夹包含以下文件结构:

          

      • apps:该文件夹下包含了基于Struts的示列应用。
      • docs:该文件夹下包含了Struts的相关文档。
      • lib    :该文件夹下包含了Struts框架的核心库类,以及Struts的第三方插件类库。
      • src   :该文件夹下包含了Struts2框架的全部源代码。

   2.   将Struts 2的lib文件夹下的commons-fileupload-1.2.1.jar,  commons-io-1.3.2.jar,freemarker-2.3.16.jar,javassist-3.7.ga.jar,ognl-3.0.jar, struts2-core-2.2.1.jar 和xwork-core-2.2.1.jar必须类库复制到Web应用的WEB-INF/lib路径下。如果需要在Web的应用中使用Struts2的更多特性, 则需要将相应的类库复制到此路径下,如果需要在DOS或者Shell中下手编译Struts2的相关程序,则还应该将struts-core-2.2.1.jar和xwork-core-2.2.1.jar添加到系统的CLASSPATH环境变量中。

   

    大部分时候,使用Struts2的Web应用并不需要利用到Struts2的全部特性,应此没有必要将lib路径下的JAR文件一次性复制到Web应用的WEB-INF/lib路径下。

    还有一点,可能有些人找不到javassist-3.7.ga.jar,这个JAR包是一个动态编译,生成Java字节码的类库,可登陆http://www.javassist.org/下载该JAR包,也可在Hibernate3.6的lib\bytecode\javassist路径下找到该包。

  3.   编辑Web应用的web.xml配置文件,配置Struts2的核心Filter,

      

<filter>  根元素用于注册一个filter
  <filter-name></filter-name>    子元素用于设置Filter的名称
  <filter-class></filter-class>   子元素用于设置Filter的完整类名
</filter> <filter-mapping>          根元素用于设置一个Filter所拦截的Web资源
  <filter-name></filter-name>    子元素用于设置Filter的名称,此名称必须要与filter中<filter-name></filter-name>的一样
  <url-pattern></url-pattern>    该子元素用于匹配用户请求的URL,例如“/Myservlet”
</filter-mapping>

    经过以上的三个步骤,就可以在一个Web应用中使用Struts2的基本功能了

    上面的步骤仅完成了Web应用增加了Struts2的支持,但依然没有使用Struts功能,使用Struts功能至少还需要一个struts.xml的配置文件,这个配置文件默认放在Web应用的类加载路径下(通常就是WEB-INF/classes路径)。

二.在Eclipse中使用Struts2

  让Web应用具有Struts2的功能,必须将Struts2框架的核心库类加载到Web应用中。刷新过后就可以看到如下界面

   在Struts2 2.5中原来的xwork单独的jar已经合并到了struts-core的jar包中了,出现如图界面,表示Web应用以已经加入了Struts2的基础类库,但是还是需要修改web.xml文件,让该文件负责加载Struts的框架。

  注意:在开始创建web应用时,如果选择的时3.0版本,是没有web.xml文件的,选择2.5版本是可以看到web.xml文件的。

  单击web.xml文件节点,编辑该文件,同时是在web.xml中定义Struts的核心Filter,并定义Filter所拦截的URL模式,(固定的)

<!--定义Struts2的核心Filter-->
<filter>
<filter-name>struts2</filter-name>

<!--在Struts2的版本为2.5之前是这样写的-->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!--让Struts2的核心拦截所有的请求-->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

 

  

三.增加登录处理

  下面为StrutsDemo应用增加一个简单的登录处理流程,通过这个流程可以大致了解Struts2的开发步骤

  增加一个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>Insert title here</title>
</head>
<body>
<form action="login">
用户名:<input type="text" name="uname"><br>
密 码:<input type="text" name="upass"><br>
<input type="submit" value="登陆" />
</form>
</body>
</html>

  

  再设置一个登录成功的页面Helloword.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>Insert title here</title>
</head>
<body> <h1>Hello Strtus2!!!!你好</h1>
</body>
</html>

  

  在设置一个登录失败的页面,error.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>Insert title here</title>
</head>
<body>
<h1>登陆出错</h1>
</body>
</html>

  配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>StrutsDemo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list> <!--定义Struts2的核心Filter-->
<filter>
<filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>在Struts2.5之前是这样写的
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> 在Struts2.5之后是这样写的
</filter>
<!--让Struts2的核心拦截所有的请求-->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> </web-app>

  创建一个DemoLog类,用来验证登录账号和密码是否正确

package com.strtus2.action;

import com.opensymphony.xwork2.Action;

public class DemoLog implements Action {
private String uname;
private String upass;
@Override
public String execute() throws Exception {
System.out.println("姓名:"+uname);
System.out.println("密码:"+upass);
if(uname.equals("ykp")&&upass.equals("123")){ return SUCCESS;
}
return "error";
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
} }

  再在src里面创建一个xml文件(上面显示要把此文件放在Web应用的类加载路径中,但是为什么此处却放在src中?因为现在在Eclipse工具的管理下,当Eclipse生成,部署Web项目时,会自动将src路径下除了 *.java外的所有文件复制到Web的WEB-INF/classes路径下)

<?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="login" class="com.strtus2.action.DemoLog">
<result name="success">/Helloword.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>

  运行结果

  运行项目时一直出现了404错误,访问任何资源都是找不到,控制台一直显示找不到org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

  百度后才知道Struts2的版本不同,此处的写法也不同,如下:

  

Struts 2的下载和安装的更多相关文章

  1. Spring 下载与安装以及spring 3.2.9 jar包详解

    一.Spring简介  Spring官网改版后,很多项目的完整zip包下载链接已经隐掉了,虽然Spring旨在引导大家用更“高大上”的maven方式来管理所依赖的jar包,但是完全没想到中国的国情,在 ...

  2. Maven的下载,安装,配置,测试,初识以及Maven私服

    :Maven目录分析 bin:含有mvn运行的脚本 boot:含有plexus-classworlds类加载器框架 conf:含有settings.xml配置文件 lib:含有Maven运行时所需要的 ...

  3. spring下载和安装

    下载和安装Spring请按例如以下步骤进行.   (1)登录网站,下载Spring的最新稳定版本号.最新版本号为spring-framework-4.0.建议下载spring-framework-sp ...

  4. UE4新手引导之下载和安装虚幻4游戏引擎

    1) 进入虚幻4的官方主页(https://www.unrealengine.com/) 这里你可以获得关于虚幻4的最新资讯,包括版本更新.博客更新.新闻和商城等.自2015年起,该引擎已经提供免费下 ...

  5. git-2.10.2-64-bit介绍&&git下载&&git安装教程

    Git介绍 分布式:Git系统是一个分布式的系统,是用来保存工程源代码历史状态的命令行工具. 保存点:Git的保存点可以追踪源码中的文件, 并能得到某一个时间点上的整个工程项目的状态:可以在该保存点将 ...

  6. JDK下载、安装、配置环境变量笔记

    自己总是在下载.安装.配置JDK的环境变量,但是这些需要的专业知识并不难,但有很多细节很重要,总是记不住,而且这些细节一旦出错影响还是很严重的,在网上查到的信息很多都比较零散,而且讲解得也不是很详细, ...

  7. my SQL下载安装,环境配置,以及密码忘记的解决,以及navicat for mysql下载,安装,测试连接

    一.下载 在百度上搜索"mysql-5.6.24-winx64下载" 二.安装 选择安装路径,我的路径“C:\Soft\mysql-5.6.24-winx64” 三.环境配置 计算 ...

  8. 如何下载和安装CocoaPods

    朋友自己学习了一段时间就去公司实习了去了之后公司用的是CocoaPods,他一脸茫然的向我求助,我这才想起来写着一遍为了帮助更多的朋友 CocoaPods是什么? 当你开发iOS应用时,会经常使用到很 ...

  9. CocoaPods介绍。如何安装Ruby环境,如何下载和安装CocoaPods?

    CocoaPods介绍? 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其 ...

随机推荐

  1. Essay写作的五大陷阱如何避免?

    相信ESSAY写作对留学生来说印象非常深刻,由于国外不同的教育模式,老师动不动就是一篇essay.可是在大家都拥有相同的GMAT或者GPA以及雅思分数的情况下.大家如何才能够脱颖而出呢?下面BayDu ...

  2. PHP笔记01

    php 环境 xamp wamp phpstudy等集成软件网上很多 PHP基础语法 PHP语法是以<?php开始 ?>结束的//php 文件的默认扩展名是.php 例如(用PHP输出he ...

  3. Python MySQL Join

    章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...

  4. spring boot 连接Mysql介绍

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  5. vue学习(一)ES6常用语法

    1 ES6常用语法 1.1 变量提升 例① # 变量提升 <div id="app"> </div> <script> console.log( ...

  6. 关于RxJS 处理多个Http请求 串行与并行方法

    mergeMap mergeMap 操作符用于从内部的 Observable 对象中获取值,然后返回给父级流对象. 合并 Observable 对象 123456 import { of } from ...

  7. filebeat+redis+logstash+elasticsearch基本配置--适用于6.4版本

    filebeat配置: filebeat.inputs:- type: log enabled: true paths: - /opt/xxxx.log fields:                ...

  8. BZOJ 2749 [HAOI2012]外星人

    题解:对每一个>2的质数分解,最后统计2的个数 注意:如果一开始没有2则ans需+1,因为第一次求phi的时候并没有消耗2 WA了好几遍 #include<iostream> #in ...

  9. Vulkan SDK 之 Descriptor Set Layouts and Pipeline Layouts

    当我们有了一个uniform buff之后,vulkan 还不知道这个信息,需要通过descriptor进行描述. Descriptors and Descriptor Sets A descript ...

  10. LabVIEW面向对象的ActorFramework(3)

    四.LabVIEW面向对象的编程架构:Actor Framework Actor Framework是一个软件类库,用以支持编写有多个VI独立运行且相互间可通信的应用程序,在该类型应用程序中,每个VI ...