`

Struts2学习笔记---Struts2环境配置及第1个Struts程序

阅读更多

学习JAVA的人大部分都要知道Struts,Spring,Hibernate框架,Struts2框架是基于MVC模式的框架,而且也是目前最为流行的框架之一。

 

对于Struts2我只是了解一点,今天开始一点点的深入,以防以后忘记

 

先了解一下流程:

 

login.jsp里的<form action="login">

login是没有后缀名,其默认的后缀名是.action。由于struts.xml中的url-pattern是/*,也就是涵盖了所有的action都到这里来处理,所以首先是那么对于以action结尾的请求是首先被

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

过滤其接收到,接下来到struts.xml中寻找action,找到login的action,并由对应的class来处理,即org.hualang.struts2.LoginAction

在LoginAction.java中,LoginAction.java其实就是个JavaBean,通过里面的get得到用户输入的信息,然后用set方法放入到request作用域当中,然后执行

execute()方法,返回success字符串,寻找到struts.xml文件的

<result name="success">/result.jsp</result>

然后转到了result.jsp文件,通过el表达式将request作用域中的信息取得,然后显示到界面上

 

第一步:

首先到http://struts.apache.org/网站上下载struts 2.2.1.1,这是目前最新的版本,选择full的.zip的release版本。该版本和struts 2.1有一些区别,一会会介绍。另外struts2和struts1是两个完全不一样的框架,应为struts2是从webwork框架与struts框架结合的,而struts2中的基本都是使用的webwork的东西。

下载完成后,大约有74.71M

 

第二步:

解压struts-2.2.1.1-all.zip ,会看到里面的目录结构如下



 apps目录里边是5个.war包的源程序,是自带的并且能够完成运行的程序,可以将其解压后,放到tomcat的webapps目录下,就可以启动了

docs目录里是struts的API

lib目录里是很多的包,其中就有一会要用到的包

 

第三步:

myeclipse下创建一个javaweb 工程,工程名字为Struts2,然后将上面的lib目录下的如下的一些包copy到工程目录下的WebRoot/WEB-INF/lib目录下


第四步:

在WebRoot下创建一个login.jsp文件

 

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

<html>
  <head>
  </head>
  
  <body>
    <form action="login"> 
    	username:<input type="text" name="username" ><br>
    	password:<input type="password" name="password"><br>
    	<input type="submit" name="submit" value="submit">
    </form>
  </body>
</html>
 

再创建一个result.jsp,用于返回结果

 

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'result.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    username:${requestScope.username } <br>
    password:${requestScope.password }
  </body>
</html>

 

第五步:

配置web.xml文件

 

<?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">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <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>
</web-app>

 这里,org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter是必须的,并且要正确。

 

第六步:

在src目录下创建包org.hualang.struts2,并且在里面创建一个LoginAction.java文件

 

package org.hualang.struts2;

public class LoginAction {
	private String username;
	private String 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()
	{
		return "success";
	}
}

注意,后边要写

public String execute()

{

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="struts2" extends="struts-default">
		<action name="login" class="org.hualang.struts2.LoginAction">
			<result name="success">/result.jsp</result>
		</action>
	</package>
</struts>

 注意,要加入dtd,另外,result标签里处理索引到result.jsp页面

 

第八步:

此时所有的代码都写完了,运行后发现报错了,但是如果用struts2.1的话,就不会报异常



 异常中说到少了个依赖,为什么呢?

下面是一则新闻,看了后就应该知道原因了

--------------------------------------------------------------------------------------------------------

 

昨日,Apache软件基金会发布了Struts 2.2.1 GA版。Struts 2.2.1包含了重要的安全修复。Apache建议开发者将现有的Struts2应用升级到Struts 2.2.1。

Struts 2.2.1的内部变化主要有:

  • XWork已经迁移到了Apache软件基金会,现在成为了Struts 2的一部分。新版XWork 2.2.0也随着Struts 2.2.1一同发布。未来,XWork将会迁移到Struts 2中。
  • XWork Maven artifact现在已位于<groupId>org.apache.struts.xwork</groupId>下。
  • XWork使用了最新版的OGNL 3.0,OGNL源代码仓库则位于Github上。
  • Javassist依赖被OGNL排除,要记得将其包含进来,除非在JBoss服务器上加载应用。
  • 解决了XWork一些突出的缺陷,感兴趣的读者可以参考CVE-2010-1870: Struts2/XWork remote command execution来了解详情。
  • 所有的示例应用(除了jboss-blank)都包含了Javassist依赖。
  • 新的jboss-blank示例应用使用了JBoss服务器,它没有将jboss-blank库包含进来,因为JBoss服务器已经提供了。
  • 增加了新的Freemarker缓存选项,这会提升标签的渲染速度,感兴趣的读者可以参考WW-3467并了解关于FreeMarker的更多信息。

Struts 2.2.1修复了之前版本的众多bug,主要修复列举如下:

  • <s:reset type="image">标签上缺少src属性
  • Struts2 showcase无法在JBoss 5.1上部署
  • struts-sitemesh-plugin 2.1.8中FreeMarkerPageFilter的失效问题
  • XWork FileManager不会解码URL
  • ConventionUnknownHandler与rest插件的协作问题
  • StrutsSpringTestCase的内存泄漏问题
  • css_xhtml主题无法应用在IE8上,在其他浏览器上也无法正常使用
  • javassist在JBoss 5.1上的问题

Struts 2.2.1的主要改进列举如下:

  • 升级至OGNL 2.7
  • 文件上传:可以对allowedTypes参数设置不同的File Content Type值
  • 完全集成了SiteMesh 2、Freemarker 2.4.2及Velocity 1.3
  • 将xwork核心迁移至Struts 2
  • 将FreeMarker升级至2.3.16
  • 将Velocity引擎升级至1.6.3

------------------------------------------------------------------------------------------------

那么,到哪里去找那个javassist依赖呢,要知道,在下载的包中的apps目录下的5个小项目都是可以运行的,也就是说明里面存在这个依赖,解压其中的一个war后,找到里面的lib目录,你会发现有个javassist-3.7.ga.jar文件,将其拷贝到工程的lib目录下,重启tomcat并发布后,就可以运行了


第九步:

终于结束了,看看运行结果吧



 上面tomcat启动后,会有那样的一条信息,是说:正在解析配置文件struts-default.xml文件,也就是我们刚才创建的struts.xml映射的E:\J2EE\tomcat6\webapps\Struts2\WEB-INF\classes\struts.xml文件



  • 大小: 14.2 KB
  • 大小: 12.4 KB
  • 大小: 45.4 KB
  • 大小: 7.1 KB
  • 大小: 12.4 KB
  • 大小: 17.3 KB
  • 大小: 16.3 KB
分享到:
评论

相关推荐

    张龙圣思园struts2学习笔记word

    张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置方式以及实战技巧。 首先,让我们深入了解Struts2的核心特性。Struts2是MVC(Model-View-...

    struts2 学习重点笔记

    ### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...

    struts2学习笔记.doc

    ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

    Struts2学习笔记

    根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...

    struts2四天的学习笔记

    Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、易于管理的企业级应用程序。在四天的学习中,你可能会深入理解其核心概念、架构、配置以及如何将其应用于实际项目中。以下是对Struts2关键知识点的...

    struts2学习笔记总结

    Struts2是一个强大的Java Web应用程序开发框架,基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性、可扩展性良好的Web应用的解决方案。本笔记将全面总结Struts2的核心概念、主要功能以及实际...

    struts2学习笔记(1)

    ### Struts2学习笔记知识点详解 #### 一、Struts2框架的基本引入步骤 ##### 1. 导入Struts2相关Jar包 在引入Struts2框架时,首先需要将Struts2的相关Jar包导入到项目的类路径中。这些Jar包通常包括核心库以及其他...

    struts2学习笔记(完美总结)——转自OPEN经验库

    Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...

    struts2学习笔记黑马程序员

    ### Struts2学习笔记之文件上传与Ajax开发 #### Struts2文件上传 **文件上传简介** 文件上传是Web应用中常见的功能之一,Struts2框架内置了对文件上传的支持,使得开发者能够轻松地实现这一功能。为了确保文件...

    Groovy学习笔记 Struts2集成--Groovy类作为Action

    1. **配置环境**:确保你的项目已经集成了Groovy和Struts2的依赖。在Maven或Gradle的build配置中添加对应的Groovy库和Struts2-Groovy插件。例如,在Maven的pom.xml中,你需要添加以下依赖: ```xml &lt;!-- Groovy ...

    struts2综合笔记

    - **发展演变**: Struts2 结合了传统 Struts1 和 WebWork 两个经典框架的优点,是一个成熟的 MVC 框架。 - **核心功能**: - 允许使用 POJO (Plain Old Java Object) 作为 Action 类,使得 Action 更易于测试。 - ...

    struts-2.3.4笔记

    3. **值栈(Value Stack)**:值栈是 Struts 2 提供的一种数据管理机制,它将 Action 对象、ActionForm 对象和其他模型对象存储在一个栈中,方便在 JSP 页面中通过 OGNL 表达式访问这些对象。 4. **OGNL(Object-...

    Struts2学习笔记(一) 环境的搭建与HelloWorld程序

    在本篇学习笔记中,我们将聚焦于环境搭建和创建第一个"Hello, World!"程序。 首先,要开始学习Struts2,你需要确保你的开发环境中已经安装了以下基本组件: 1. **Java Development Kit (JDK)**:Struts2依赖于Java...

    Struts1及14. Struts2学习笔记

    Struts是Apache软件基金会 Jakarta项目下的一个开源框架,主要用于构建基于Java EE的Web应用程序。它提供了MVC(Model-View-Controller)设计模式的实现,帮助开发者更好地组织和管理代码,提升开发效率。本学习笔记...

Global site tag (gtag.js) - Google Analytics