Struts2学习第一天

本人是一个小白,正在自学SSH框架,其实已经把SSH过了一遍了,但是没有记下什么笔记,决定重新再来一遍,把学到的都记下来,如果以后忘了,还能看一看,也分享给大家,互相学习。如果我的笔记有错误,请大家帮我多多指出。谢谢。

Struts2学习第一天

第一天学习的知识点:

  • 1.Struts2的执行原理和流程
  • 2.jar包的导入
  • 3.第一个Struts2小程序(HelloWord)

一.Struts2的执行原理和流程


这是一个简单的不完整的Struts2的执行原理和流程图,但是这对于一个刚刚接触Struts2的新手来说,比较容易理解。

  1. 首先客户端浏览器发送HTTP请求到Web应用
  2. Wep容器将请求转发给前端控制器
  3. 前端控制器跳转到HelloAction类,
  4. HelloAction类返回一个结果,通过这个返回的结果,跳转到相应的结果页面。

二.jar包的导入

  • 下载struts2的jar包 struts-2.3.15.1-all 版本.

  • Struts运行必要jar包 
    • struts2-core-2.3.1.1.jar:Struts 2框架的核心类库
    • xwork-core-2.3.1.1.jar:Command模式框架,WebWork和Struts2都基于xwork
    • ognl-3.0.3.jar:对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性
    • freemarker-2.3.18.jar:Struts 2的UI标签的模板使用FreeMarker编写
    • commons-logging-1.1.x.jar:ASF出品的日志包,Struts 2框架使用这个日志,包来支持Log4J和JDK 1.4+的日志记录。
    • commons-fileupload-1.2.2.jar: 文件上传组件,2.1.6版本后需要加入此文件
    • commons-io-2.0.1.jar:传文件依赖的jar包
    • commons-lang-2.5.jar:对java.lang包的增强

                                        注意:我们怎样去下载好的Struts2文件中找到这些jar包呢?

1.解压下载好的Struts2文件


2.找到apps文件,这里面还有一个lib文件里面包含了所有的jar包,有100多个,但是很多暂时用不到。

3.找到下面被 的文件,复制一份,将后缀名改为.war改为.zip,就可以解压了。

4.解压后的文件里面找到WEB-INF

5.找到lib,这里面的jar包就是struts2必须用到的jar包


将jar包复制到Eclipse自己创建的项目下面的lib文件里


选中所有的jar包,点击鼠标右键找到BuildPath-AddBuldPath,这样就把jar包加入到项目里面了。我们看到下面图片中被红线圈起来的文件里多了很多的东西,就说明jar包加载成功了。



三创建第一个Struts2小程序(HelloWord)

首先需要在web.xml配置Struts2过滤器

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>struts2-01</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <!-- 配置Struts2过滤器 -->
  <filter>
  	<!-- 设置过滤器的名字,这里必须设置为 Struts2-->
  	<filter-name>struts2</filter-name>
  	<!-- 
  		指向的地址在Libraries里面找到 struts2-core-2.3.15.3.jar(struts的版本不同,这里就不一样,
 core的差不多就找对了)~~org.apache.struts2.dispatcher.ng.filter~~StrutsPrepareAndExecuteFilter.class
  找到这个文件后点开,右键StrutsPrepareAndExecuteFilter这个文件找到Copy Qualified 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> 

创建hello.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<!-- 
		${pageContext.request.contextPath}等价于<%=request.getContextPath()%>
		或者可以说是<%=request.getContextPath()%>的EL版 .
		比如我的项目名称是struts2-01 在浏览器中输入为http://localhost:8080/struts2-01/hello.jsp就可以登陆jsp页面
		${pageContext.request.contextPath}或<%=request.getContextPath()%>取出来的就是/struts2-01,而”/”代表的含义就是http://localhost:8080 
	 -->
	 <!-- 建立一个a连接 href指向一个地址,这个地址必须以 action为结尾,其实也可以改为别的,但是需要在配置文件中修改,在后面的学子中就会学到-->
	<a href="${pageContext.request.contextPath }/hello.action">hello.action</a>
</body>
</html>

创建result。

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h1>result</h1>
</body>
</html>

在src下面创建com.hello包,包下面创建HelloWordAction.java类

package com.hello;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

/*
 * HelloWordAction这个类必须实现Action类里面的方法,其实这种方法并不是常用的
 * 最常用的方法是继承ActionSupport这个类,刚开始接触Struts2,
 * 实现Action比较好理解。
 */
public class HelloWordAction implements Action{

	@Override
	public String execute() throws Exception {
		//输出一些信息,证明执行了此方法
		System.out.println("执行了HelloWordAction");

		// 返回一个字符串,配置文件会通过这个字符串跳转到相应的页面。
		return "success";
	}

}

在src下面创建struts.xml文件(必须是这个名字),而且必须在src下面

其中关于namespance的介绍可能不是很清楚点击打开链接这里面有详细的介绍。

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
	给配置文件添加约束 (这个从哪里去找呢?Libraries~~struts2-core-2.3.15.3.jar
	~~struts-2.3.dtd 按照这个顺序在项目中查找到版本最高的以
	dtd结尾的文件,打开后就能找到下面的约束)
	
	配置这个的作用是给配置文件添加提示和检错,如果不添加Struts2项目的jsp页面直接就打不开(404)。
	如果电脑没有联网或者添加后没有提示,可以去Eclipse中添加。具体添加方法可以百度一下搜索 “struts添加dtd约束”。
-->

<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
	
	<struts>
		<!-- 
			name随便写,但是不能重复 ; extends="struts-default"默认包是很重要的,
			它定义了struts2内部的众多拦截器,很多拦截功能都是靠它的,每次加载都要
			加载这个包,通常情况下所有的包都要继承这个包; namespace 举个例子说明
			namespace="/hello",那么我们在hello.jsp中的a连接的地址就应该是
			http://localhost:8089/struts2-01/hello/hello.action。如果
			不写namespace=""这个属性就默认为空,也就是http://localhost:8089/struts2-01/hello.action
		-->
		<package name="defalutl" extends="struts-default" namespace="/">
			<!-- 
				name:就是我们在hello.jsp中的a连接的地址(也就是在浏览器中访问的地址)
				${pageContext.request.contextPath }/hello.action中的hello
				必须保持一致。
				class指向的就是HelloWordAction这个类的地址。后面不能有.java.
			 -->
			<action name="hello" class="com.hello.HelloWordAction">
				<!-- 
					result指向的就是要跳转的地址,name="success"还记得上面
					HelloWordAction类中返回的success字符串吗?返回的是什么
					这里的name等于的就是什么。result.jsp就是要跳转的jsp页面。
				 -->
				<result name="success">result.jsp</result>
			</action>
		</package>
	</struts>

文章中所有代码,本人已经运行过,没有曝错,达到想要的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值