`
8366
  • 浏览: 802277 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

第1讲.Struts2入门与配置

阅读更多

 

首先看看struts2和struts1.x的比较:

 

 

 

为了对Struts2Strtus1.x进行全面的比较,让读者了解这两种框架各自的优缺点,以便于在自己的项目中,根据实际情况,选择合适的框架,对它们两者进行比较,总结了如下表分析比较。

特性
Struts1.x
Struts2
Action
Struts1.x要求Action类要扩展自一个抽象基类。Struts1.x的一个共有的问题是面向抽象类编程而不是面向接口编程。
Struts2的Action类实现了一个Action接口,连同其他接口一起来实现可选择和自定义的服务。Struts2提供一个名叫ActionSupport的基类来实现一般使用的接口。当然,Action接口不是必须的。任何使用execute方法的POJO对象可以被当作Struts 2的Action对象来使用。
线程模型
Struts1.x Action类是单例类,因为只有一个实例来控制所有的请求。单例类策略造成了一定的限制,并且给开发带来了额外的烦恼。Action资源必须是线程安全或者同步的。
Struts2 Action对象为每一个请求都实例化对象,所以没有线程安全的问题。(实践中,servlet容器给每一个请求产生许多丟弃的对象,并且不会导致性能和垃圾回收问题)。
Servlet 依赖
Struts1.x的Action类依赖于servlet API,当Action被调用时,以HttpServletRequest和HttpServletResponse作为参数传给execute方法。
Struts2的Action和容器无关。Servlet上下文被表现为简单的Maps,允许Action被独立的测试。Struts2的Action可以访问最初的请求(如果需要的话)。但是,尽可能避免或排除其他元素直接访问HttpServletRequest或HttpServletResponse。
易测性
测试Struts1.x的主要问题是execute方法暴露了Servlet API这使得测试要依赖于容器)。第三方的扩展,如Struts TestCase,提供了一套Struts1的模拟对象(来进行测试)。
Struts2的Action可以通过初始化、设置属性、调用方法来测试。依赖注入的支持也是测试变得更简单。
捕获输入
Struts1.x使用ActionForm对象来捕获输入。象Action一样,所有的ActionForm必须扩展基类。因为其他的JavaBean不能作为ActionForm使用,开发者经常创建多余的类来捕获输入。DynaBeans可以被用来作为替代ActionForm的类来创建。但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。
Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDriven 特性简化了taglib对POJO输入对象的引用。
表达式语言
Struts1.x整合JSTL,所以它使用JSTL的表达式语言。表达式语言有基本的图形对象移动,但是对集合和索引属性的支持很弱。
Struts2使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL)。
将值绑定到页面
Struts1.x使用标准JSP机制来绑定对象到页面上下文。
Struts2使用“ValueStack”技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
类型转换
Struts1.x的ActionForm属性经常都是String。Struts 1.x使用Commons-Beanutils来进行类型转换。转换每一个类,而不是为每一个实例配置。
Struts2使用OGNL进行类型转换。提供基本和常用对象的转换器
验证
Struts1.x支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性
Action执行控制
Struts1.x支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
 
 
六、       结论

前面已经简要介绍了Struts2的起源,并详细对比了Struts2和Struts1.x的差异,读者应该对Struts2的基础有所了解了——包括高层的框架概念和基础的请求流程,并理解Struts1.x和Struts2两者之间在Action方面的差别,Struts2加强了对拦截器与IoC的支持,而在Struts1.x中,这些特性是很难想象的。
同时,读者应该明白:Struts2是WebWork的升级,而不是Struts 1.x的升级。虽然Struts 2提供了与Struts1.x的兼容,但已经不是Struts1.x的升级。对于已有Struts1.x开发经验的开发者而言,Struts1.x的开发经验对于Struts2并没有太大的帮助;相反,对于已经有WebWork开发经验的开发者而言,WebWork的开发经验对Struts2的开发将有很好的借鉴意义。
 
 
开始一个struts2之旅。。。。。
1.首先需要从struts2的官方网站上下载Struts 2.0.14 ,struts2要求我们的jdk版本最低为1.5,如果你的版本为1.5以下,你又想使用struts2,你必须在你的项目上中吧Struts 2.0.11 中的 j4 包中的jar包引入,这是Struts 2.0对
jdk1.5以下的一个支持
2.建立一个javaweb项目
3.配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
		<!-- struts2的核心过滤器,相当于struts1.x 的ActionServlet-->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>
 4.模拟用户登录,有两个页面,一个是用户登录页面一个是结果页面,在action中直接把用户导向结果页面
login.jsp
<%@ page contentType="text/html; charset=GBK"%>

<HTML>
<body>

	<form action="login.action" method="post">
	
	username:<input type="text" name="username"><br>
	password:<input type="password" name="password">
	<input type="submit">
	</form>
</body>

</HTML>
 
 rusult.jsp
<%@ page contentType="text/html; charset=GBK"%>

<HTML>
<body>


	username:${requestScope.username}<br>
	password:${requestScope.password}

</body>

</HTML>
 
 5.写action,其实就是一个pojo多了一个execute方法
package cn.com.xinli.test.action;

public class LoginAction
{
	private String username;
	private String password;
	
	/*
	 * 客户端和Action的匹配是按方法的名字
	 * 而不是属性名字
	 * 比如客户端发过来的是password则会找setPassword
	 * 而不是找属性password
	 * 
	 * */
	public String getUsername()
	{
		return username;
	}
	public void setUsername(String username)
	{
		this.username = username;
	}
	public String getPassword()
	{
		return password;
	}
	public void setPassword(String password)
	{
		this.password = password;
	}
	public String execute() throws Exception
	{
		/*小写,默认会找result标签配置的页面*/
		return "success";
	}
	
}
 
6.写struts.xml配置文件,讲请求和处理的action关联起来,写在src目录下,编译后会到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="struts2" extends="struts-default">
		<action name="login" class="cn.com.xinli.test.action.LoginAction">
			<result>/result.jsp</result>
		</action>
		
	</package>
	
   

</struts>
 
7.在tomcat中配置这个web项目
8.访问http://localhost:9090/struts2/login.jsp ,点击提交,成功!
 
 
参考资料:
 
分享到:
评论

相关推荐

    浪曦_Struts2应用开发系列_第1讲.Struts2入门与配置_swf

    浪曦_Struts2应用开发系列_第1讲.Struts2入门与配置_swf

    浪曦_Struts2应用开发系列_第1讲.Struts2入门与配置2

    浪曦_Struts2应用开发系列_第1讲.Struts2入门与配置2

    浪曦_Struts2应用开发系列_第1讲.Struts2入门与配置1

    浪曦_Struts2应用开发系列_第1讲.Struts2入门与配置

    struts2学习笔记一(第1讲.Struts2入门与配置)

    NULL 博文链接:https://zhaolianyang.iteye.com/blog/859212

    struts2学习笔记二(第2讲.Struts2入门与配置续)

    本篇学习笔记将深入探讨Struts2的入门与配置,继续上一讲的内容。 首先,Struts2的基础入门涉及到以下几个核心概念: 1. **Action类**:在Struts2中,业务逻辑通常封装在Action类中。Action类是处理用户请求的主体...

    Struts2 chm文档

    1.Struts 2权威指南——第1章 Struts 2概述.doc 2.truts 2权威指南——第2章 Struts 2下的HelloWorld.doc 3.Struts 2权威指南——第3章 Struts 2基础.doc 4.Struts2.0系列(1-15) 5.Struts2中用Spring实现IoC.doc 6....

    struts2入门例子

    这个"struts2入门例子"旨在帮助初学者理解Struts2的基本架构和核心功能,通过实际操作来学习如何配置Struts2框架以及实现页面跳转。 在Struts2中,`struts.xml`是核心配置文件,它是整个应用的入口点,负责定义动作...

    默然说话struts2入门1-配置及第一个应用.rar

    这个"默然说话struts2入门1-配置及第一个应用.rar"压缩包文件旨在帮助初学者理解Struts2的基本配置和如何创建一个简单的用户登录应用程序。下面将详细介绍Struts2的基础知识及其在实际应用中的步骤。 1. **Struts2...

    struts2入门级的例子

    2. **创建第一个Struts2应用**: 一个简单的"Hello, World!"示例是开始的最佳方式。你将创建一个Action类,它包含一个返回字符串的方法,这个字符串会被Struts2用来决定显示哪个页面。然后,你需要在Struts2配置文件...

    Struts2入门教程。包括jquery集成等。入门必看

    第 1章 STRUTS2入门................................................................................................................................................3 第 2章STRUTS2晋级.....................

    struts2入门学习配置

    配置Struts2的第一步是添加必要的依赖。在你的项目中,你需要引入Struts2的核心库和其他相关库,这些通常可以通过Maven或Gradle等构建工具来管理。在`pom.xml`或`build.gradle`文件中添加对应的依赖项。 接着,配置...

    Practical.Apache.Struts2.Web.2.0.Projects

    1. **快速入门**:介绍如何搭建Struts2开发环境,创建第一个“Hello World”应用程序。 2. **MVC原理**:深入理解MVC设计模式,以及Struts2如何实现这一模式。 3. **Action与Result配置**:演示如何配置Action和...

    Struts2 入门配置小实例

    这个入门配置小实例将带你了解如何在实际项目中设置和使用Struts2框架。以下是一些核心知识点: 1. **MVC模式**: Struts2基于Model-View-Controller(MVC)设计模式,它将业务逻辑(Model)、用户界面(View)和...

    struts入门与实践.zip

    2. **Hello World程序**:创建第一个简单的Struts应用,展示Action类和JSP页面的交互。 3. **表单验证**:使用ActionForm进行客户端和服务器端的数据验证。 4. **Action和ActionMapping**:理解Action和...

    [原]Struts2-入门与配置

    2. **创建第一个Struts2应用** 创建一个简单的"Hello, World!"示例,通常会有一个Action类,比如`StrutsHelloWorld`,该类包含一个返回字符串的方法,这个字符串会作为视图展示。Action类需要实现`...

    struts2入门教程

    介绍如何将Struts2与Spring框架整合,利用Spring管理Action的依赖注入,实现松耦合。 **第十三章:安全与最佳实践** 讨论Struts2的安全问题,如XSS、CSRF等,以及如何防范这些攻击。同时,提出一些优化和提高代码...

    Struts2入门教程

    四、编写第一个Struts2应用 1. 创建Action类:这是处理用户请求的核心,通常继承自org.apache.struts2.dispatcher.ng.ExecuteAction或com.opensymphony.xwork2.ActionSupport类。 2. 编写Action的execute方法:这个...

    struts2框架入门

    Struts2框架是Java Web开发中的一个强大工具,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化、易于维护的Web应用开发方式。本资源包含"15_学员用书_STRUTS2核心_IMAGE版.pdf"这本书的源码...

Global site tag (gtag.js) - Google Analytics