Struts2 学习(一)

一、搭建Struts2开发环境:

1),下载struts2所需jar包:

http://struts.apache.org/download.cgi#struts2014  下载struts-2.x.x-all.zip,下载完后解压文件,开发struts2应用需要依赖的jar文件在解压目录的lib文件夹下。不同的应用需要的JAR包是不同的。下面给出了开发Struts 2程序最少需要的JAR。

struts2-core-2.1.8.1.jar  :Struts 2框架的核心类库

xwork-core-2.1.6.jar  :XWork类库,Struts 2在其上构建

ognl-2.7.3.jar  :对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的

属性

freemarker-2.3.15.jar :Struts 2的UI标签的模板使用FreeMarker

编写

commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK

1.4+的日志记录。

commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后需要加入此文件

commons-io-1.3.2.jar,上传文件依赖的jar包

2),创建web工程,加入struts2所需jar包;

3),在工程web.xml中配置struts2的filter,(struts2是基于filter的)

代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
   
   <filter>
     <filter-name>StrutsPrepareAndExecuteFilter</filter-name>
     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
   </filter>
   
   <filter-mapping>
     <filter-name>StrutsPrepareAndExecuteFilter</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping>

</web-app>

这样,我们的每个请求都会走struts2的过滤器;

4)创建jsp页面,在里面加入一个action路径:

<a href="${pageContext.request.contextPath}/primer/helloWorldAction.action">helloWorld</a><br>
<!--点击这个超链接会走struts2-->

5)struts2中提供了一个Action接口,struts2收到请求之后,默认都会执行Action接口的execute()方法,所以我们需要实现Action接口,让struts2执行我们自己的execute()方法;在struts2中,由于struts2的Action接口有几个默认实现类,所以我们需要继承默认实现类ActionSupport即可;

代码:

import com.opensymphony.xwork2.ActionSupport;

/**
 * 在struts2中所有的action都要实现Action接口
 */

@SuppressWarnings("serial")
public class HelloworldAction  extends  ActionSupport {
//public class HelloworldAction  implements Action {
	public String execute() throws Exception {
		System.out.println("HelloworldAction");
		return "success";
	}
}

6)创建struts.xml文件,在里面配置HelloworldAction和请求连接相关联;

struts2.xml房子工程src目录下;

代码:

<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
	"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
   <!--请求的路径 /primer/helloWorldAction.action-->
   <!-- 
       package:struts2框架使用包来管理action,这里的包相当于java中包
         * name:包的名称,唯一的,主要作用用于继承
         * namespace:命名空间,相当于房间号,唯一的
         * extends:struts2中所有的包都要继承默认的包struts-default
            * 这个默认的包存在struts-default.xml文件中
                     <package name="struts-default" abstract="true">
            * 继承的原因,要执行拦截器,完成struts2相关的功能
       
       action标签:配置struts2框架要访问的action
            * name:struts2框架要访问的action,在同一个包中唯一
            * class:要访问的action的完整类路径
            
       result:处理action的execute方法的返回结果
          * name:结果的唯一标志,该值必须和action中execute方法的返回值对应
          * result标签的文本值;要转发和重定向的路径
	       public String execute() throws Exception {
			 System.out.println("HelloworldAction");
			 return "success";
		   }     
   -->  
  <package name="primer" namespace="/primer" extends="struts-default">
     
     <!--配置当action找不到的情况下,执行默认的action -->
     <default-action-ref name="helloWorldAction"/>
     
     <action name="helloWorldAction" class="cn.yujian.primer.HelloworldAction">
         <result name="success">/primer/success.jsp</result>
     </action>
     
     <!-- 
          * 如果没有为action指定class,则默认的class是com.opensymphony.xwork2.ActionSupport
          * 如果没有指定方法,则默认的方式 exectue
          * result标签中没有指定name属性,则默认的name属性是success  
      -->
     <action name="actionNoClass">
       <result>/primer/success.jsp</result>
     </action>
  </package>
</struts>

目前为止,就可以将struts2跑起来了,当点击jsp中的连接时,就会看到HelloworldAction中的execute()方法执行;

时间: 2024-08-04 03:23:48

Struts2 学习(一)的相关文章

struts2 学习记录 之 国际化

struts2 接下来是国际化,如果一个系统想要被多个国家的人所用就不得不考虑国际化的问题,如果为每一个国家都开发一套系统维护起来会很麻烦,所以就有了个思想,那就是把动态的,用不同语言展示的部分,放到配置文件中,动态的从文件里读取想要展示的内容,不同国家的人就得到了不同的展示,这是一个很好的思想,所以我把它记录一下了,嘻嘻... 首先 struts2 要把它的配置文件写好,以中文和美式英语为例,配置文件如下: 配置文件是以键值对的形式存在的,且以properties结尾,命名也有一定的格式,如t

struts2 学习记录 过滤器 国际化

struts2接触不是一天两天了,但是一直没有用它做什么项目,但老师确一直说它有很大的学习价值,所以还是把我学习到的东西给记录一下,记录的东西没有规律,只是给自己留个备份, struts2中最关键的是action,action可以用来传值,用起来很方便,它可以用el表达式在jsp页面上展示出来,也可以用ognl,el只能表达作用域里面的值,而struts2里面还有个放数据的地方叫做ActionContext,这个类里面可以放不在作用域里的键值对,但是el表达式还是可以获取到,但是效率很低,所以尽

struts2学习笔记(二)—— 获取登录信息及计算在线人数

实现目的: 1.点击"Login"的超链接,进入登录页面 2.填写登录信息,提交表单,将用户信息保存进Session 3.显示用户名,并计算在线人数 4.点击"Logout"的超链接,在线人数减一,并使Session失效 Struts2实现: 1.配置web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:/

struts2学习笔记(8)-------struts2的ajax支持

struts2支持一种stream类型的Result,这种类型的Result可以直接向客户端浏览器响应二进制,文本等, 我们可以再action里面生成文本响应,然后在客户端页面动态加载该响应即可. 直接看例子: public class LoginAction { private String user; private String pass; private InputStream inputStream; public InputStream getInput(){ return inpu

Struts2学习

Struts2流程 Web端发起一个request到Struts2action的过程为:首先对提交的表单或者数据进行类型转换,如果转换失败,则action跳转至input所对应的页面,如果没有设置input对应的页面则页面报错.如果转换成功,则已经自动给action的属性赋值了,接下来会调用action中的validate()校验方法,如果校验失败,则同转换失败一样跳转至input所对应的页面,只有校验通过了,才会去执行execute()方法,然后根据返回值跳转到对应的页面. JSP EL表达式

Struts2学习笔记(OGNL表达式)

Struts2学习笔记(OGNL表达式) Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言: JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言: Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python.Ruby和Smarttalk等)的一些起特性: Velocity,严格来说不是表达式语言,它是一种基于Ja

Struts2 学习笔记(概述)

Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并实现应用的功能.通常分为数据模型和业务逻辑模型,数据模型用来存放业务数据,比如订单信息.用户信息等:而业务逻辑模型包含应用的业务操作,比如订单的添加或者修改等. 封装应用状态:某些应用数据封装起来,使得视图只能通过接口获取对应的数据 响应状态查询:对应用的状态改变进行处理 暴露应用功能:暴露接口 通

struts2学习笔记(一)

一.struts2和struts1的区别 1.Action类 a) Struts1要求Action类继承于一个抽象类,Struts1普遍使用抽象类编程而不是接口 b) Struts2的Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能.Struts2提供一个ActionSupport基类去实现常用的接口.Action接口不是必须的,任何有execute标识的POJO对象都可以作为Struts2的Action对象. 2.线程模式 a) Struts1的Act

struts2学习笔记(7)------------ognl表达式

OGNL表达式(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言.是一种可以方便地操作对象属性的开源表达式语言. Struts2自行维护一个特定范围的"银行",Action将数据放入其中,而JSP页面可从中取数据,表面上似乎看起来像是jsp可以直接访问Action数据.. 当Action属性不再是简单的值,而是某个对象,数组,集合时,就需要使用ognl表达式来访问这些对象,数组,集合内的数据了. 1)ognl的stack Conte

Struts2学习笔记1

一.下载struts2.0.1 http://struts.apache.org/downloads.html,下载struts-2.0.1-all.zip,这个压缩包中包括了开发struts2所需的struts2-core.jar核心包以及其他struts2所依赖的JAR文件,另外另一些struts2的演示样例程序以及一些HTML的API文档. 二.试用struts2.0.1 1. 新建一个WEBproject,将struts-2.0.1-all.zip压缩包中的lib文件夹下的全部jar文件