一.为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. C#验证码 使用GDI绘制验证码

    首先展示一下效果图如下: C#中的GDI特别方便,很多方法我们只要简单的调用就可以实现很复杂的功能.具体实现过程如下: 首先创建一个windows窗体应用(测试使用,实际开发winform程序时在需要 ...

  2. python面试题整理(二)

    1.进程,线程,协程定义,有什么区别 进程是操作系统分配资源的最小单位,一个进程对应一块CPU 线程是进程中的某一个控制单元,是CPU调度的最小单元,线程之间相互独立,进程结束线程也会结束,一个进程至 ...

  3. RabbitMQ整合Spring Booot【消费者补偿幂等问题】

    如果消费者 运行时候 报错了 package com.toov5.msg.SMS; import org.springframework.amqp.rabbit.annotation.RabbitHa ...

  4. ZOJ 3791 An easy game DP+组合数

    给定两个01序列,每次操作可以任意改变其中的m个数字 0变 1  1 变 0,正好要变化k次,问有多少种变法 dp模型为dp[i][j],表示进行到第i次变化,A,B序列有j个不同的 变法总和. 循环 ...

  5. jupiter的@TempDir 等不生效

    jupiter与junit是 完全独立的测试组件,要严防在测试中将二者混用.最好在依赖引入jupiter 时 就将junit的依赖干掉,以防在写测试用例时将二者混用.不会报错,但是会导致 jupite ...

  6. python 导入数据包的几种方法

    1.直接导入整个数据包:improt 数据包 参考代码: # -*- coding:utf-8 -*- # 导入random数据包 import random # 引用random数据包中的randi ...

  7. js原型链理解(4)-经典继承

    经典继承就是组合继承,就是组合构造函数和原型链的优点混合继承. 1.避免引用类型的属性初始化 2.避免相同方法的多次初始化 function Super(name){ this.ages = [100 ...

  8. linux下的 sudo ln -s 源文件 目标文件

    这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接. 这个命令最常用的参数是-s,具体用法是:sudo l ...

  9. ROS常用命令或经常碰到的问题

    本篇博客会随时更新. 一.常用命令 1.添加环境变量 gedit ~/.bashrc 2.ubuntu系统监视器 gnome-system-monitor 二.问题 1.sudo apt-get up ...

  10. bzoj 4300绝世好题

    呵呵呵呵 #include<bits/stdc++.h> #define INF 0x7fffffff #define LL long long #define N 100005 usin ...