有部分内容转载牛人的博客:

http://blog.csdn.net/hudie1234567/article/details/6730481

http://blog.csdn.net/lishuangzhe7047/article/details/22120077

学习Struts2

导入jar包

如果有安装myeclipse,可以在myeclipse的目录下找struts包。

C:\MyEclipse 2015\configuration\org.eclipse.osgi\54\0\.cp\data\2.1\core

commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.0.4.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

配置struts

首先配置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>

从上面可以看出,struts2框架是通过filter启动的。在StrutsPrepareAndExecuteFilter的init()方法中读取类路径下默认的配置文件struts.xml完成初始化操作。

注意:struts2读取到struts.xml中的内容后,以javabean的形式保存在内存中,以后struts2对用户的每次请求处理将使用内存中的数据,而不是每次都读取struts.xml文件。

编写一个action

package com.action;

public class HelloWorldAction
{ public String hello(){
System.out.println("进入hello方法");
return "success";
}
}

在src根目录下创建 struts.xml文件

<?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="HelloWorld" namespace="/helloworld" extends="struts-default">
<action name="nameHello" class="com.action.HelloWorldAction" method="hello">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>

然后这样就可以通过http://localhost:8080/struts2/helloworld/nameHello.action访问到success.jsp页面了

action 搜索顺序已验证正确

action名称的搜索顺序
1.获得请求的URI,例如uri是:http://server/struts2/path1/path2/path3/test.action
2.首先寻找namesp为/path1/path2/path3的package,如果不存在这个package,就转第三步,如果存在这个package,则在这个package中寻找名字为test的action,当在该package中找不到action时就到默认namespace的package中寻找(默认package的命名空间为空字符串“”),如果在默认的package中还找不到该action,页面提示找不到action。
3.寻找namespace为/path1/path2的package,如果不存在这个package,则转第四步,如果存在这个package,则在这个package中寻找名字为test的action,当在该package中找不到action时就到默认namespace的package中寻找(默认package的命名空间为空字符串“”),如果在默认的package中还找不到该action,页面提示找不到action。
4.寻找namespace为/path1的package,如果不存在这个package,则转第五步,如果存在这个package,则在这个package中寻找名字为test的action,当在该package中找不到action时就到默认namespace的package中寻找(默认package的命名空间为空字符串“”),如果在默认的package中还找不到该action,页面提示找不到action。
5.寻找namespace为/的package,如果存在这个package,则在这个package中寻找名字为test的action,当在该package中找不到action或不存在这个package时就到默认namespace的package中寻找(默认package的命名空间为空字符串“”),如果在默认的package中还找不到该action,页面提示找不到action。

  

学习struts2的更多相关文章

  1. 学习Struts2的个人疑惑及问题解决

    刚开始学习SSH框架中Struts2时,个人疑惑以及一些问题总结一下. 1.package节点namespace属性值决定访问路径问题       namespace不写或写namespace=&qu ...

  2. 学习struts2及MVC

    1.MVC模式基础 1.1.MVC模式简介 MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而达到更好的开发和维护效率.在MVC模式中 ...

  3. 学习Struts2的第一个应用步骤

    ---恢复内容开始--- 一.在官网 http://struts.apache.org/下载struts-2.3.31-all 1.  打开struts-2.3.31-all,将struts-2.3. ...

  4. 深入学习Struts2

    本部分主要介绍struts.xml的常用配置. 1.1.    包配置: Struts2框架中核心组件就是Action.拦截器等,Struts2框架使用包来管理Action和拦截器等.每个包就是多个A ...

  5. 框架学习Struts2之HelloWord

    一.概述 Struts2是基于MVC设计模式的web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts作为控制器(Controller)来建立模型与视图之间的数据交互.Str ...

  6. SSH框架学习------struts2前后台传值(二)

    struts2的Action类一般都会继承(extends)ActionSupport类(Action类,即实现action的类)1.前传后:jsp里<input type="text ...

  7. SSH框架学习------struts2(一)

    1.总的目录 2.所有程序 1)index.jsp很简单 <%@ page language="java" contentType="text/html; char ...

  8. Java——Struts2 crud 简单实例(学习struts2和ssh) 用Myeclipse实现

    1.new web project 2.给新建的web项目添加struts2支持 3.项目结构中有了struts.xml和struts2核心库 4.编码 4.1项目结构图 4.2源代码: (1)DbU ...

  9. 学习Struts2经验总结

    一.struts 访问路径问题 1) Struts2的思想:主要围着“action”转,只要找到“action”它就知道自己该干嘛了. 首先配置struts.xml ,我们可以明白的看到,action ...

随机推荐

  1. wpa_supplicant 初始化

    几个重要的结构体介绍: 1. struct wpa_interface --- Parameters for wpa_supplicant_add_iface(). wpa_interface对应网络 ...

  2. Python调用MYSQL,将文件名和路径批量入库用法小结

    最近项目需要将大量的压缩文件导入到数据库中,所以开始总结用Python批量处理的办法,本次是首先将这些压缩文件的文件名提取出来,然后导入到数据库中. 由于涉及到路径的读取处理,所以方法有os模块和co ...

  3. IE图片下载

    之前要用到图面下载功能,玩上找了好多,方法基本都是直接window.open(src),这样是直接在新打开的窗口中打开图片,并不是下载.考虑到IE的兼容性问题太难找了,好不容易找到一个能用的,所以保存 ...

  4. Map.Entry遍历Map

    Map.entry是Java中的一个接口.每一个Map.entry代表一个map对象. 可以通过 Map是java中的接口,Map.Entry是Map的一个内部接口,它表示map中的一个实体(及一个k ...

  5. Spring和SpringMVC配置中父子WebApplicationContext的关系

    一.前言 有这么一个故事:一辆装满石头的板车,一根绳子系着,起初绳子没有拉直,拉绳的人以为很轻,等真的绷直了才发现自己的力气根本不够~人往往喜欢得过且过,但是有些东西真的是绕不过的,所以现在必须努力的 ...

  6. ASP.NET页面之间传值Application(5)

    Application对象的作用范围是整个全局,也就是说对所有用户都有效.它在整个应用程序生命周期中都是有效的,类似于使用全局变量一样,所 以可以在不同页面中对它进行存取.它和Session变量的区别 ...

  7. PowerShell收发TCP消息包

    PowerShell收发TCP消息包 https://www.cnblogs.com/fuhj02/archive/2012/10/16/2725609.html 在上篇文章中,我们在PSNet包中创 ...

  8. [USACO08MAR]土地征用Land Acquisition

    题面在这里 题意 约翰准备扩大他的农场,眼前他正在考虑购买N块长方形的土地. 如果约翰单买一块土地,价格就是土地的面积,但他可以选择并购一组土地, 并购的价格为这些土地中最大的长乘以最大的宽. 给定每 ...

  9. 关于Maven项目install时出现No compiler is provided in this environment的处理

    关于Maven项目build时出现No compiler is provided in this environment的处理 新配置的Eclipse环境,运行现有项目没问题,一日,从svn上检出了一 ...

  10. angular响应式编程

    1.响应式编程 例子import {Observable} from "rxjs/Observable"; Observable.from([1,2,3,4]) .filter(( ...