Struts2入门

1 框架概述

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

1.1什么是框架

  1. 所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的精力放到业务需求的分析和理解上面。
  2. 特点:封装了很多细节,程序员在使用的时候会非常简单。

1.2 三大框架

Longlong ago,有三大框架struts、hibernate、spring(SSH)
springmvc、mybatis、spring(SSM)

1.3 三层架构

MVC & Web-Service-Dao
Struts2入门

1.4 MVC回顾

mvc
M:Model 模型,封装数据。javabean
V:view 视图,展示界面。jsp
C:Controller 控制器,控制程序流程。

2 Struts简介

2.1 Struts2概述

  • Struts2是Apache发行的MVC开源框架。注意:它只是表现层web(MVC)框架。

2.2 Struts2的来历

  • Struts1:
     Struts1也是apache开发的一套mvc的开源框架。在2005年之前非常流行。
     弊端:Struts1的核心控制器就是一个Servlet。随着使用者的增多,弊端开始出现。
  • Struts2:
     在long long ago,有一个设计超前的框架XWork,后来推出了XWork1和WebWork2。
     Struts2就是apache和OpenSymphony组织合并开发出来。
     里面包含了WebWork2的核心及Struts的一些特性和功能。除此之外,和Struts1没有任何关系了。

3 Struts的环境搭建

3.1 下载Struts2开发包

apache官网页面,选择struts2Jar包

3.2 解压后的目录结构

  • apps:官方提供的案例Demo
  • docs :官方提供的文档
  • lib :官方提供的jar包,需要用到哪个才导入哪个
  • src: 源码

3.3 struts jar包介绍

案例banks jar包介绍:

struts2-core-2.3.33.jar Struts核心jar包
xwork-core-2.3.33.jar Struts核心jar包
ognl-3.0.19.jar OGNL表达式
log4j-core-2.3.jar 开源日志 log for java
log4j-api-2.3.jar 开源日志 log for java
asm-3.3.jar 基于子类的动态代理
asm-tree-3.3.jar 提供其于对象的表现形式
asm-commons-3.3.jar 提供基于事件的表现形式
commons-fileupload-1.3.2.jar 文件上传所需要的包
asm-commons-3.3.jar 文件上传所需要的包
freemarker-2.3.22.jar 页面 模板框架
javassist-3.11.0.GA.jar 对于字节码的支持,jBoss的一个子项目
commons-lang3-3.2.jar 对java.lang的扩展

3.4 快速构建项目

1.创建Web工程
2.导jar包: 把struts2-blank.war中的lib下所有的包导入自己创建的工程
3.添加配置文件: 把struts2-blank里classes目录下的struts.xml配置文件拷贝到自己创建工程的src中
4.配置struts的过滤器 : 在web.xml中,配置Filter

<!-- 	配置的目的是用于拦截请求,由Struts的规则去处理请求,而不是用以前的servlet去处理-->
<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>

5.Tomcat运行Web工程

3.5 Struts.xml 的Action配置讲解

<struts>
	<!-- 
		package:表示包
					name:包名,在struts.xml文件不能有相同的包名,包名是唯一的
					extends:繼承,固定struts-default
				action:动作,
					name:相当于servlet的映射路径  (@WebServlet)
					class:处理请求的类,相当于servlet类
					method:处理请求的方法
				result:结果,写返回的jsp的页面
			
	 -->
   <package name="p1" extends="struts-default">
   		<action name="hello" class="com.itheima.web.action.HelloAction" method="sayHello">
   			<result name="success">/success.jsp</result>
   		</action>
   </package>

</struts>

4 Struts配置文件的加载顺序

4.1 加载时机

 struts有很多配置文件,如下面的表格
 当应用被tomcat加载的时候,struts2的配置文件就已经被加载过了。

4.2 加载顺序

顺序 配置文件名 所在位置 说明
1 default.properties struts2-core-2.3.15.3.jar\org\apache\struts2 不能修改
2 struts-default.xml struts2-core-2.3.15.3.jar\org\apache\struts2 不能修改
3 strtuts-plugin.xml struts2-core-2.3.15.3.jar\org\apache\struts2 不能修改
4 struts.xml 我们的应用中 可以修改的:推荐
5 struts.properties 我们的应用中 可以修改的
6 web.xml 我们的应用中 可以修改的,可以给过滤器配置参数

4.3 default.properties的一些默认配置

配置 含义
struts.i18n.encoding=UTF-8 国际化
struts.action.extension=action, 默认访问扩展后缀,可以是action,也可以没有后续
struts.devMode = false 是否是开发模式。开发模式:改了配置文件,不需要重启。输出更多的错误信息。开发阶段建议为true。

4.4 修改struts的访问后缀

1. 在struts.xml的配置文件中添加
2. 在src下创建struts.properties
 添加struts.action.extension=htm
 注:如果这样配置会覆盖struts.xml的配置
3. 在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>struts2_demo</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>
<filter>
   <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
      <init-param>
      	<param-name>struts.action.extension</param-name>
      	<param-value>do</param-value>
      </init-param>
  </filter>

<filter-mapping>
       <filter-name>struts2</filter-name>
       <url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>

4.5 配置struts的开发模式

在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>
	<constant name="struts.devMode" value="true"></constant>
	<!-- 
		package:表示包
				name:包名,在struts.xml文件不能有相同的包名,包名是唯一的
				extends:繼承,固定struts-default
		action:动作,
			name:相当于servlet的映射路径  (@WebServlet)
			class:处理请求的类,相当于servlet类
			method:处理请求的方法
		result:结果,写返回的jsp的页面
			
	 -->
   <package name="p1" extends="struts-default">
   		<action name="hello" class="com.itheima.action.HelloAction" method="sayHello">
   			<result name="success">/success.jsp</result>
   		</action>
   </package>

</struts>