作者在这里创建的是maven工程,没有了解过如何使用maven的同学请先学习如何使用maven搭建项目。

一、jar包引入

作者引入的是2.3.7版本的struts2-core包。
pom的配置可以在http://mvnrepository.com网站搜索到。

<dependency><groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId><version>2.3.7</version>
</dependency>

使用maven可以方便的将核心jar包依赖的其他jar包自动导入。所以在pom只需要指定一个struts2-core的依赖就可以了。

二、web.xml配置

因为struts2的控制器是基于拦截器实现的。所以我们需要在web.xml文件中配置好FileterDispatcher拦截器,并且拦截所有servlet请求。

 <!-- 定义struts2的拦截器 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class><!-- 此处用来配置struts.xml的位置--><init-param><param-name>config</param-name><param-value>struts-default.xml,struts-plugin.xml,struts.xml</param-value></init-param></filter><!-- 定义拦截器拦截的请求,这里配置成拦截所有请求 --><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>

不同版本struts2的拦截器类请看这里

maven项目因为目录结构不同于普通的web项目。一般把配置文件放在/src/main/resource目录下。所以会导致struts.xml文件读取不到–进而导致请求页面出现here is no Action mapped for action name xxxx。出现这样的情况应如代码块中的代码一样在web.xml文件中指定拦截器读取的配置文件–标签。
ps: struts2的配置文件可以设置设置多个选项使用逗号隔开。搜索是从classpath根目录开始的,所以读者可以自己设置struts.xml存放的路径记得放在/src/main/resource/目录下即可。

三、struts2.xml配置

1. 基础struts2.xml文件


<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts>
<!-- 未设置内容 -->
</struts>

如果读者不是引入2.3版本的struts2,应将上面的配置文件中http://struts.apache.org/dtds/struts-2.3.dtd改为http://struts.apache.org/dtds/struts-2.x.dtdx为你的版本。

2. 标签

  <package name="user" namespace="/user"></package>

属于的子标签。其作用是为了更好地管理配置信息,实现配置的重用

属性

  • name:定义包的名称,在被别的包继承时使用。唯一不能重复。
  • namespace:定义了url请求和package的映射。可以重复。
  • extends:指向被继承的package的name。一般要继承struts-default。
  • abstract:设置为true则这个package仅用作组织配置信息。不映射任何请求到action。

3. 标签

<action name="login"  class="struts2.basic.action.UserAction" method="login">
</action>

action的作用作为逻辑控制器,处理请求并返回逻辑视图

属性

  • name:与所属package的namespace组成一个action请求。必选。
  • class:定义action的处理类。可选。
  • method:定义处理类具体执行的方法,默认为excute。可选。

4. 标签

 <!-- result定义了action的返回逻辑视图和物理视图的映射  --><result name="page">/user/login.jsp</result><result name="success">/user/profile.jsp</result>

是属于的子标签。
result的作用是定义了action逻辑视图和物理视图之间的映射关系

属性

  • name:与action返回的结果对应。缺省值为success。
  • type:默认为dispatch。返回页面。后文再详细介绍

ps:逻辑视图浅显的讲就是一个字符串。物理视图就是返回的jsp页面。


代码示例

可以在github下载study项目中的struts2.basic项目。查看示例源码
struts2.basic源码地址


问题与解决

  1. jsp页面EL表达式无效?
    解决:jsp页面添加如下代码
<%@ page isELIgnored="false" %>

2.struts-default.xml文件没找到。
解决:和自己配置的struts.xml一样,在web.xml中指定struts-default.xml的搜索路径。

读者有任何有关疑问都欢迎留言,所反馈问题与解决方法最后都会找个时间加入到study项目的wiki中。


最后

这会是一场持久战。

strust2-学习(一)框架搭建和简单示例相关推荐

  1. 炼数成金Tensorflow学习笔记之2.4_Tensorflow简单示例

    炼数成金Tensorflow学习笔记之2.4_Tensorflow简单示例 代码及分析 代码及分析 # -*- coding: utf-8 -*- """ Created ...

  2. 【pyradiomics学习】——安装pyradiomics以及简单示例

    目录 数据集下载: 示例代码 参考文献: bug修复 运行结果: 数据集下载: https://www.jianguoyun.com/p/DcEwQq0Q45bOBxj09JYC (访问密码: gd8 ...

  3. Scala学习笔记-环境搭建以及简单语法

    关于环境的搭建,去官网下载JDK8和Scala的IDE就可以了,Scala的IDE是基于Eclipse的. 下面直接上代码: 这是项目目录: A是scala写的: package first impo ...

  4. struts框架搭建及validator示例

    包看就会,如果哪没看懂,欢迎评论区留言交流或者私信 struts的validator示例 前置 0 项目地址 1 创建web工程 2 lib下导入jar包 3 写代码 1 创建struts项目 2 添 ...

  5. springMVC和Shiro框架整合使用简单示例 【转】

    为什么80%的码农都做不了架构师?>>>    一.目录结构 首先是目录结构如图: 二.pom.xml文件 <project xmlns="http://maven. ...

  6. python学习笔记:easygui的简单示例

    学习python的图形用户界面EasyGui,转一例实例,实现的功能是统计指定文件夹下的代码行数,测试下自己所写的代码离10万行还差多少距离 先贴代码,代码不是自己写的,之前自己写的代码 无法运行,很 ...

  7. android按键精灵执行流程,android按键精灵学习_框架搭建

    android按键精灵脚本的思路 1.主线循环 2.支线循环 3.功能模块 4.代码命令 5.固定模块 6.检测状态模块, 通常是启动一个线程,监控多少分钟后状态还没改变,就跳出支线循环并记录时间和结 ...

  8. 铂西学习日记---UDP通讯协议简单示例

    1.UDP协议概述 UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此 ...

  9. java jsf_eclipse搭建JSF简单示例的教程(亲测)

    修改web.xml xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xm ...

最新文章

  1. VoxelNet: 基于点云的三维空间信息逐层次学习网络
  2. 浏览器直接访问Linux云服务器下的文件
  3. Ios开发之定位CLLocationManager
  4. python2.7中没有zlib库的解决方案(zipimport.ZipImportError: can't decompress data; zlib not available)
  5. 穿越剧_零差评的5部穿越剧,少有的巅峰之作,第一堪称穿越鼻祖!
  6. sqlplus下无法shutdown情况下不妨试试crsctl stop crs
  7. 再学C++之C++中的全部关键字
  8. OpenCV交叉编译ARM版本
  9. 酒店管理系统-需求分析报告
  10. 使用MATLAB进行图像处理——显示图像的灰度直方图并进行对比度增强
  11. 锐捷交换机VSU配置
  12. AR涂涂乐⭐二、 给material赋予材质、移除material、调整扫描框透明度
  13. 数的三次方根(二分)
  14. 增量式分级判别回归树(IHDR)|翻译与笔记
  15. Genome Assembly as Shortest Superstring
  16. 旁路电容和去耦电容基础知识
  17. 汉诺塔问题的递归和非递归算法
  18. 复选框的name属性
  19. 易语言json置入_易语言取置JSON文本使用方法-易语言学习-猴子技术宅
  20. Android4.0新特性 中文翻译

热门文章

  1. [Java Web]AJAX Axios | 一种结合HTML来取代传统JSP的技术
  2. ECMAScript 2016(ES7) 的新特性总结
  3. 感性电路电流计算_「硬见小百科」一些硬件电路技术经验整理
  4. 基于51单片机的智能门禁控制系统(仿真+源码+全套资料)
  5. Thread.setDaemon设置说明
  6. NRF24L01+模块实现双向通信(带ACK payload)
  7. 嵌入式Linux--U-Boot(三)Boot命令使用
  8. 裸机和RTOS系统区别与联系
  9. 布斯(Booth)乘法
  10. job全异常 mapreduce_eclipse 运行MapReduce程序错误异常汇总(解决Map not fount)