Struts2入门
struts2
1 框架概述
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
1.1什么是框架
- 所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的精力放到业务需求的分析和理解上面。
- 特点:封装了很多细节,程序员在使用的时候会非常简单。
1.2 三大框架
Longlong ago,有三大框架struts、hibernate、spring(SSH)
springmvc、mybatis、spring(SSM)
1.3 三层架构
MVC & Web-Service-Dao
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>