SSH框架之struts2专题1:Struts2入门

1 Struts2入门

1.1 Struts2简介

  • Struts2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。

1.2 Struts2下载与版本

  • Struts2官网:http://struts2.apache.org
  • 版本号的意义:
  • Alpha:内测版,一般不向外部公布,会有很多bug。
  • Beta:除错 + 增新,也属于内测版,但是相对于Alpha版已有很大的改进,消除了严重错误,但是还是存在缺陷,需要更多测试来消除。这个阶段会加入新的功能。
  • RC:除错,Release Candidate,发行候选版,外测版。与Beta版的最大区别在于Beta阶段会加入新功能,而RC版一般不会加入新的功能,而主要着重于除错。(RC版本是最终发放给用户的最接近正式版的版本,发行后改正bug就是正式版了,是正式版之前的最后一个测试版。)
  • GA:General Availability,普通有效版,稳定版,官方开始推荐广泛使用的版本。
  • Release:发行版,即最终版。在一系列测试版之后的正式发行版本,是最终交付用户使用的一个版本。该版本也称之为标准版。Release会以单词形式出现在软件封面上,有时候会使用符号R。

1.3 Struts2的优点

1、Struts2是非侵入式设计:Struts2的Action类为POJO类,不依赖于Servlet API和Struts API。 2、Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能。 3、Struts2提供了类型转换器,可以将特殊的请求参数转换成需要的类型。 4、Struts2的输出验证可以对指定方法进行验证。 5、提供了全局范围、包范围和Action范围的国际化资源文件管理实现。

2 Struts2开发环境的搭建

2.1 Struts2的jar包

  • struts2最基本的jar包,可以从Struts2框架解压目录下的apps中的struts-blank.war中获取。(所使用的是struts-2.3.24-all.zip版本)
  • 将struts2-blank.war扩展名修改为zip后,解压。在其WEB-INF\lib中所有Jar即为Struts2运行的基本Jar包。从使用的两日志Jar包中可以看出,Struts2使用的是Log4j2日志技术。

2.2 Struts2的配置文件

  • Struts2的默认配置文件为struts.xml,该文件需存放在WEB-INF/classes下。即,在myEclipse中应放在src目录下。
  • Struts2配置文件的头部可以从struts2-core-2.3.24.jar下的struts-2.3.dtd中找到。

  • 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>

	</struts>

2.3 配置Struts2的启动项

  • 在Struts2中,Struts框架是通过Filter启动的。Filter在web.xml中的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
	<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
		<display-name>01-struts2</display-name>
		<!-- 注册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>
		<welcome-file-list>
			<welcome-file>index.jsp</welcome-file>
		</welcome-file-list>
	</web-app>
  • 若忘记子配置细节,可以从struts2-blank.war解压目录中WEB-INF下的web.xml中复制。

2.4 测试搭建的项目

  • 将该项目部署到服务器后,启动服务器,在控制台没有报错,则说明Struts2应用平台搭建成功。

2.5 解决struts.xml中无自动提示功能的问题

  • 如果在联网的状态下,struts.xml文件关联了相关的dtd文件,在按下“Alt + /”后,就会有自动提示的功能。
  • 如果在没有联网的状态下,需要在MyEclipse环境中进行相关的配置,内容如下: 1、拷贝struts2-core-2.3.24.jar根目录中的struts-2.3.dtd文件至指定目录。 2、复制struts.xml文件中的url路径“http://struts.apache.org/dtds/struts-2.3.dtd” ,在Window -> Preferences中进行如下设置。

3 Struts2工作流程

3.1 开发流程

1、编写页面 2、定义Action类 3、注册Action 4、编写结果页面

3.2 简单示例代码

1、编写静态页面index.jsp,代码如下所示:

<form action="test/login.action" method="post">
					姓名:<input type="text" name="name" /> <br/>
												 年齡:<input type="text" name="age" /> <br/>	
					 <input type="submit" value="登录" />
			</form>

2、定义action类LoginAction,代码如下所示:

package com.eason.action;

	public class LoginAction {
		private String name;
		private int age;

		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public int getAge() {
			return age;
		}
		public void setAge(int age) {
			this.age = age;
		}

		public String execute(){
			System.out.println("name = " + name);
			System.out.println("age = " + age);
			return "success";
		}
	}

3、注册action,在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 name="xxx" namespace="/test" extends="struts-default">
			<action name="login" class="com.eason.action.LoginAction">
				<result name="success">/welcome.jsp</result>
			</action>
		</package>
	</struts>

4、编写结果页面welcome.jsp,代码如下所示:

名字:  ${name } <br/>
			年齡:   ${age }<br/>

5、使用tomcat启动项目,再打开index.jsp页面,填写“姓名”和年龄,点击“登录”后,页面中可以显示welcome.jsp中的内容:

3.3 struts2执行流程图

4 附加说明

4.1 Tomcat的应用管理配置

  • 使用tomcat图形用户界面管理多个项目对于开发有很多裨益,下面介绍如何进行使用。 1、需要在myEclipse配置的tomcat中的tomcat-users.xml配置中添加如下内容:
<role rolename="manager-gui" />
 <user username="eason" password="02000059" roles="manager-gui"/>

2、重启tomcat后(配置文件被重新加载),使用浏览器访问tomcat首页,点击“Manager App”,输入用户和密码之后登录,即可进入tomcat图形用户界面管理(管理员)。

4.2 绝对路径和相对路径问题

1、绝对路径 - 绝对路径指的是无法改变的路径,根据给出的路径可以准确定位的路径。 - 而对于计算机中的绝对路径,有分为本地绝对路径和网络绝对路径。但是无论哪种绝对路径都是指带有访问协议的路径。 - 本地绝对路径:带有盘符的路径。例如:d:\images\eason.jsp就是一个绝对路径。不过,对于本地路径,其实质是忽略了file协议的。其带协议的全路径实际为:file:///d:\images\eason.jsp 。 - 网络绝对路径:http://127.0.0.1:8080/01-struts2/index.jsp 就是一个绝对路径,带有http访问协议。

2、相对路径 - 相对路径,是指根据参照路径的不同,给出路径的实际路径可以发生改变的路径。根据给出的路径,在保证参照路径不变的情况下,才能够准确定位。若参照路径发生改变,则无法实现定位。 - 在Web应用中,相对路径的写法有两种:一种是以斜杠开头的相对路径,一种是不以斜杠开头的相对路径。 - 以斜杠开头的相对路径,根据路径所在文件的不同,又可分为两种:前台路径和后台路径。

  • 前台相对路径:是指由浏览器解析执行的代码中所包含的路径。例如,html、css、js中的路径,以及jsp中静态部分的路径。像html以及jsp中的静态部分中的<img src=""/>、<a href=""></a>、<form/>等;像css中的background:img("")等;像js中的window.location.href=""等,都属于前台路径。
  • 前台相对路径的参照路径是Web服务器的根路径。即http://127.0.0.1:8080/ 。

  • 后台相对路径:由服务器解析执行的代码以及文件中所包含的路径。例如,java代码中的路径、jsp文件动态部分中的路径、xml文件中的路径(xml文件是要被java代码加载入内存,并由java代码解析的)等。
  • 后台相对路径的参照路径是Web应用的根路径。例如本例中的http://127.0.0.1:8080/01-struts2 。

  • 不以斜杠开头的相对路径:无论是前台路径,还是后台路径,其参照路径是当前资源的访问路径,而不是当前资源的保存路径。(如 http://127.0.0.1:8080/01-struts2/index.jsp 绝对路径,其访问路径为: http://127.0.0.1:8080/01-struts2/ ,其资源路径为:index.jsp)
相关文章
相关标签/搜索