【SSH】Struts2学习(一)Struts入门、各类配置详解、Action详解

来源:互联网 发布:阿里云华南机房 编辑:程序博客网 时间:2024/06/09 02:33

一、准备Struts2的开发包

1、下载 网址:http://struts.apache.org/download

我下载的是Structs 2.3.34版本,也可以下载其他版本,下载后要进行解压



2、解压下载好的Struts2开发包,如下为解压好的目录结构


对文件结构进行简单介绍



二、Struts2初体验

1、创建一个web工程导入相应jar包

Structs 2.3.34解压开的lib文件夹有Struts开发可能用到的所有jar包,但是实际开发不需要用到这么多,

我们可以将apps下的 struts2-blank.war 解压进入到 WEB-INF下的lib中可以拿到struts2基本开发包,将这些包导入到项目中




2、创建一个页面:放置一个链接

新建一个index.jsp文件,在jsp中编写一个Action访问路径

<h1>Struts的入门案例</h1><a href="${pageContext.request.contextPath }/HelloAction">访问我第一个Struts2的Action</a>

3、编写一个Action

创建一个包com.sh.exam01,在该包下面新建一个HelloAction的类,在这个类中编写一个公有的,返回值为String类型,无参的execute方法

package com.sh.exam01;public class HelloAction {/** * 提供一个默认的执行方法:execute * @return */public String execute() {System.out.println("HelloAction中的execute执行了");return "success";}}
Action编写好后为了使Struts能对其进行识别,需要对Action进行配置


4、完成Action的配置

在apps的示例代码,在WEB-INF的classes中,有一个名称为struts.xml文件,这就是struts2的配置文件,我们可以将该文件放入自己工程src下,因为工程发布到web服务器中就是WEB-INF下的classes中,我们将原有的内容删除,配置自己编写的Action类即可。

<?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><!-- 配置一个包:package --><package name="hello" namespace="/" extends="struts-default"><!-- 配置Action --><action name="HelloAction" class="com.sh.exam01.HelloAction"><!-- 配置结果页面的跳转 --><result name="success">/hello.jsp</result></action></package></struts>
配置好Action类之后,执行之前还需要配置Struts2的核心过滤器(web层框架的特点是基于前端控制器的模式,这个前端控制器就是由过滤器实现的),过滤器的名称是StrutsPrepareAndExecuteFilter.

5、配置核心过滤器

Struts2框架要执行,所有的请求都需要经过这个前端控制器,所以需要对其进行配置,因为这个核心过滤器完成了框架的部分功能,需要在web.xml中进行如下配置

 <!-- struts2核心控制器,本质是一个过滤器 -->  <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>

6、进行测试----测试成功


三、Struts2初体验案例的执行过程图解



四、配置struts.xml的提示(不联网情况下)

1、搜索xml,按照图示进行操作


2、在已经下载解压好的Struts2包中lib包下面找到其核心包 struts2-core-2.3.34.jar,将其解压,解压后找到struts-2.3.dtd,记事本打开该文件,复制图示地址


3、点击File System按钮,找到本地struts-2.3.dtd,将Key type改为URI,将第4步复制的地址粘贴到此


4、点击OK,完成配置

五、Struts2配置详解

1、struts.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><!-- 配置一个包:package 将Action配置封装,可以在package中配置很多actionname属性:包名,标识作用,在不与其他包名重复的前提下随便起namespace属性:给action的访问路径定义一个命名空间extends属性:继承一个指定的包abstract属性:包是否为抽象;标识性属性 表示该包不能被独立运行,专门被继承--><package name="hello" namespace="/" extends="struts-default"><!-- 配置Actionname属性:决定了Action访问资源名class属性:action的完整类名method属性:指定调用Action中的哪个方法来处理请求 --><action name="HelloAction" class="com.sh.exam01.HelloAction"><!-- 配置结果页面的跳转 resultname属性:标识结果处理的名称,与action方法的返回值对应type属性:指定调用哪一个result类处理结果,默认使用转发--><result name="success">/hello.jsp</result></action></package></struts>


2、struts2常量配置

(1)struts2默认常量配置位置


常用的常量:


(2)修改struts2常量配置(3种方式)(方式先后也是加载顺序)
① 在src创建一个struts.properties文件进行覆盖
struts.i18n.encoding=GBK
② 在struts.xml中覆盖常量(重点)
使用<constant name="" value=""></constant>元素进行覆盖
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
③在项目的web.xml中
<!-- 配置常量   <context-param>  <param-name>struts.i18n.encoding</param-name>  <param-value>UTF-8</param-value>  </context-param>

3、struts2配置进阶

(1)动态方法调用(重要)
第一种方式:


第二种方式(重点掌握):


(2)struts2的默认配置(了解)

4、分模块开发的配置

实际开发中,我们很多人同时开发都需要对同一个配置文件进行修改即struts.xml,由于是Struts核心配置文件。频繁修改极易出错导致项目出现问题,所以提供了<include>标签来解决这个问题,也就是在一个struts.xml文件中包含其他的配置文件,Struts2默认只加载WEB-INF/classes下的struts.xl文件,所以一旦使用了多个xml文件来配置了Action,就需要通过struts.xml来进行包含。

六、Action详解

1、Action的编写方式

(1)方式1 创建一个类,可以是POJO
package com.sh.exam04;//方式1:创建一个类,可以是POJO//POJO:不用继承任何父类,也不用实现任何接口//使struts框架的代码侵入性更低public class Demo3Action {}
(2)方式2 实现一个Action接口
package com.sh.exam04;import com.opensymphony.xwork2.Action;/** * 方式2:实现一个Action接口 * 里面有execute方法,提供action方法的规范 * Action方法预置了一些字符串,可以在返回结果时使用,为了方便 * @author Administrator * */public class Demo4Action implements Action{public String execute() throws Exception {return null;}}
(3)方式3(推荐使用)继承一个类ActionSupport
package com.sh.exam04;import com.opensymphony.xwork2.ActionSupport;/** * 方式3:继承一个类ActionSupport * 帮我们实现了Validateable, ValidationAware, TextProvider, LocaleProvider * 如果我们需要用到这些接口 的实现时,不需要自己再进行实现 * @author Administrator * */public class Demo5Action extends ActionSupport{}

参考源码:https://github.com/AmazeLee/Struts2.git

We both look up at the same stars, yet we see such different things. 

我们仰望同一片星空,却看见了不同的事物。



阅读全文
0 0
原创粉丝点击