概述
目录
- 第一节 框架概述
- 1.1 什么是框架
- 1.2 三大框架
- 1.3 三层架构
- 1.4 MVC、Servlet、Filter
- MVC
- Servlet
- Filter
- 第二节 Struts简介
- 2.1 Struts2简介
- 2.2 Struts2来历
- 第三节 Struts的环境搭建
- 3.1 下载Struts2开发包
- 3.2 解压后的目录结构
- 3.3 Struts jar包介绍
- 3.4 第一个Struts项目
- 第一步:创建Eclipse Web工程
- 第二步:导jar包
- 第三步:添加配置文件
- 第四步:配置struts的过滤器
- 第五步:Tomcat运行Web工程
- 3.5 Struts的Action配置
- 第一步:
- 第二步:
- 第三步:
- 第四步:
- 3.6 可能出现的问题:struts.xml输入时没有提示
- 第四节 Struts执行流程图
- 第五节 查看Struts的文档
- 第六节 Struts配置文件的加载顺序
- 6.1 加载时机
- 6.2 加载顺序
- 6.3 default.properties的一些默认配置
- 6.4 struts-defaults中默认的拦截器分组
- 6.5 修改struts的访问后缀
- 第一种方式:
- 第二种方式:
- 第三种方式:
第一节 框架概述
1.1 什么是框架
- 所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的精力放到业务需求的分析和理解上面。
- 特点:封装了很多细节,程序员在使用的时候会非常简单。
1.2 三大框架
很久很久以前,有三大框架:Struts、Hibernate、Spring(SSH)
现在常用的三大框架:SpringMVC、Mybatis、Spring(SSM)
1.3 三层架构
MVC & Web-Service-Dao
1.4 MVC、Servlet、Filter
MVC
- M :Model 模型,封装数据。javabean
- V :view 视图,展示界面。jsp、html
- C :Controller 控制器,控制程序流程。servlet、filter
Servlet
Filter
- Servlet能做的事情,过滤器也可以做到。并且过滤器比Servlet还多了一个放行的功能,因此过滤器比Servlet功能更为强大。
- 结论就是:过滤器同样也适合做控制器。
第二节 Struts简介
2.1 Struts2简介
- Struts2是Apache发行的MVC开源框架。注意:它只是表现层web(MVC)框架。
2.2 Struts2来历
-
Struts1:
- Struts1也是apache开发的一套mvc的开源框架。在2005年之前非常流行。
- 弊端:Struts1的核心控制器就是一个Servlet。随着使用者的增多,弊端开始出现。
-
Struts2:
- 在很久以前,有一个设计超前的框架XWork,后来推出了XWork1和WebWork2。
- Struts2就是apache和OpenSymphony组织合并开发出来。
- 里面包含了WebWork2的核心及Struts的一些特性和功能。除此之外,和Struts1没有任何关系了。
第三节 Struts的环境搭建
3.1 下载Struts2开发包
Struts2.3.33下载地址: https://archive.apache.org/dist/struts/2.3.33/.
3.2 解压后的目录结构
- 解压zip后的目录结构如下图:
3.3 Struts jar包介绍
- 在apps目录中,提供了一个 struts2-blank.war 包
- 作为初学者在项目集成中,我导入了lib下的所有包
- jar的介绍
struts2-core-2.3.33.jar | Struts核心jar包 |
xwork-core-2.3.33.jar | |
ognl-3.0.19.jar | OGNL表达式 |
log4j-core-2.3.jar | 开源日志 log for java |
log4j-api-2.3.jar | |
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的扩展 |
- 这里选择struts2-blank.war 下的lib里的jar包作为下面第一个Struts项目的lib
3.4 第一个Struts项目
- 目标:集成Struts需要的东西
第一步:创建Eclipse Web工程
小贴士:
这里使用的是Eclipse+Tomcat8.5+jdk1.8环境
- 创建一个Web工程,名为day01_struts2_demo01
首先,你要先打开Eclipse软件,打开后在工具栏依次点击【File】>>>【New】>>>【Dynamic Web Project】,这个就代表新建的项目是WEB项目
小贴士:
如果没有找到【Dynamic Web Project】请看下一步
-
如果我们找不到【Dynamic Web Project】这个选项,说明以前没有建立过WEB项目,所以不在快捷导航里,这时我们点击【Other】这个选项。
-
这个界面弹出的是查询窗口,查询的内容是所有我们可以建立的项目类型,比如JAVA项目、WEB项目等,都可以再找个窗口查询得到。
-
我们是要建立WEB项目,所以在查询输入框里输入【WEB】,下面会列出所有WEB相关的项目,现在,我们知道【Dynamic Web Project】这个类型的项目了,用鼠标选中它,然后点击【Next】按钮。
-
这个是填写项目的基本信息,包括项目名、项目运行时服务器版本,你可以选择tomcat或者其他都可以,看你的项目需要,在这里我输入一个【day01_Struts2_demo1】来完成项目的建立,输入完毕后我们点击【Next】按钮
-
这个窗口显示的WEB项目中需要编译的JAVA文件的目录,默认是SRC目录,这个我们不需要改,直接点击【Next】
-
接着弹出窗口,显示的是我们的WEB项目,WEB文件相关的目录,就是html或者jsp还有js那些web相关的文件存放的目录,默认是【WebContent】,你也可以修改成你想要的文件名,注意,下面有个复选框,表示的是是否要自动生成web.xml文件。
-
web.xml:这个文件是WEB项目的核心文件,也是WEB项目的入口,老版本的Eclipse都会有这个文件,但是新版本的Eclipse因为可以使用在JAVA代码中注解的方式,所以提供让用户选择是否要生成,如果是新手最好选择生成。这里选择生成。
-
然后我们点击【Finish】
-
下面就是我们新建的WEB项目的目录结果
-
JAVA存放目录:SRC
-
WEB文件目录:WebContent
-
WEB配置文件:web.xml
现在,可以开始你的Struts2之旅了!
第二步:导jar包
-
把struts2-blank.war中的lib下所有的包导入自己创建的工程
-
【Ctrl + a全选、Ctrl + c复制】
-
右键lib 【Paste】粘贴进去
第三步:添加配置文件
-
把struts2-blank里classes目录下的struts.xml 配置文件拷贝到自己创建工程的src中
-
然后删除struts标签的所有内容,一步步添加struts标签内容的知识
第四步:配置struts的过滤器
- 在web.xml中,配置Filter
<!-- 配置struts的过滤器 【拦截所有请求】-->
<filter>
<filter-name>struts2</filter-name>
<filterclass>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 配置的目的是用于拦截请求,由Struts的规则去处理请求,而不是用以前的servlet去处理
第五步:Tomcat运行Web工程
- 如果tomcat运行没有报错,就代表配置成功
3.5 Struts的Action配置
- 目标:配置一个请求的完整流程
第一步:
- 在struts.xml中配置package和action,写如下代码
<struts>
<package name="p1" extends="struts-default">
<!--
package:表示包
name:包名,在struts.xml文件不能有相同的包名,包名是惟一
extends:继承,固定struts-default
action:动作
name:(这里的hello)相当于Servlet的映射路径(@WebServlet)
class:处理请求的类,相当一个Servlet类
method:处理请求的方法
result:结果,写返回的jsp页面
-->
<action name="hello" class="com.it.web.action.HelloAction" method="sayHello">
<!-- 成功jsp页面是从WebContent开始找的 -->
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
第二步:
- 写一个HelloAction的类,需要写个sayHello方法
package com.it.web.action;
public class HelloAction {
public String sayHello(){
System.out.println("HelloAction的sayHello方法被调用了...");
return "success";
}
}
第三步:
- 在WebContent中添加一个success.jsp页面
<body>
由HelloAction的sayHello方法返回的页面
</body>
第四步:
- 浏览器访问下面三个路径:
- http://localhost:8080/day01_struts2_demo01/hello 【能正常访问】
- http://localhost:8080/day01_struts2_demo01/hello.action 【也能正常访问】
- http://localhost:8080/day01_struts2_demo01/hello.act 【不能正确访问】
- 因为struts默认是处理.action的请求,或者不带action也可以,其它后缀的都不会拦截,会放行,如jsp
- http://localhost:8080/day01_struts2_demo01/hello 【能正常访问】
小贴士:
这里跳转到了sucess.jsp页面,但路径没有改变,内部使用了转发。
3.6 可能出现的问题:struts.xml输入时没有提示
-
如果struts里没有标签提示
- 第一种解决办法是电脑联网,会自动搜索struts的dtd
- 第二种解决办法配置本地dtd,打开偏好设置,安装下面的步骤操作即可
- struts-2.3.dtd文件可以从struts2-core-2.3.33.jar包内找到
-
复制这个文件在项目中创建一个dtd文件夹放入
-
如果找不到,也可以解压struts2-core-2.3.33.jar在里面找到
-
【Windows】>>>【Preferences】打开偏好设置
- 再将struts.xml中的网址:http://struts.apache.org/dtds/struts-2.3.dtd 复制进去
小贴士:
这里就是告诉Eclipse要去网上找dtd的时候优先找本地的
第四节 Struts执行流程图
第五节 查看Struts的文档
-
目标:查找struts的架构图及内部
- 在线文件:http://struts.apache.org/core-developers/big-picture.
- 离线文档:struts-2.3.33 /docs/docs/home.html
- 打开上面两个连接后,然后查找guides -> bigPictrue 执行过程
小贴士:
User created标识的是以后我们经常要写的
第六节 Struts配置文件的加载顺序
6.1 加载时机
- struts有很多配置文件,如下面6.2的表格
- 当应用被tomcat加载的时候,struts2的配置文件就已经被加载过了。
6.2 加载顺序
顺序 | 配置文件名 | 所在位置 | 说明 |
1 | default.properties | struts2-core-2.3.15.3.jarorgapachestruts2 | 不能修改 |
2 | struts-default.xml | struts2-core-2.3.15.3.jar | 不能修改 |
3 | strtuts-plugin.xml | 在struts2提供的插件jar包中 | 不能修改 |
4 | struts.xml | 我们的应用中 | 可以修改:推荐 |
5 | struts.properties | 我们的应用中 | 可以修改 |
6 | web.xml | 我们的应用中 | 可以修改,可以给过滤器配置参数 |
6.3 default.properties的一些默认配置
struts.i18n.encoding=UTF-8 | 国际化 |
struts.action.extension=action,, | 默认访问扩展后缀,可以是action,也可以没有后续 |
struts.devMode = false | 是否是开发模式。开发模式:改了配置文件,不需要重启。输出更多的错误信息。开发阶段建议为true。 |
- 未开启开发模式报错网页
- 开启开发模式后报错网页,有了更多错误信息还定位了错误位置
- 在struts.xml文件中配置如下代码即可
<struts>
<!-- 配置开发模式 -->
<constant name="struts.devMode" value="true"></constant>
</struts>
6.4 struts-defaults中默认的拦截器分组
- 如图,默认的包里有一结果类型,如转发和重定向
- 如图,默认情况下,struts会使用defaultStack的拦截器分组
- struts-defualts中主要的内容
- 结果类型、拦截器分组,默认使用的接替器分组
- 结果类型、拦截器分组,默认使用的接替器分组
6.5 修改struts的访问后缀
第一种方式:
- 在 struts.xml 的配置文件中添加如下代码:
<constant name="struts.action.extension" value="php"></constant>
第二种方式:
- 在src下创建struts.properties
- 添加struts.action.extension=html
小贴士:
如果这样配置会覆盖struts.xml的配置
这是由于struts加载文件的顺序所导致
第三种方式:
- 在web.xml中配置,代码如下:
<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>jsp</param-value>
</init-param>
</filter>
小贴士:
由于struts加载文件的顺序,web.xml会覆盖掉上面2个方法的配置,即使不注释,后缀.php、.html也无法生效了。
最后
以上就是傲娇小虾米为你收集整理的Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01第一节 框架概述第二节 Struts简介第三节 Struts的环境搭建第四节 Struts执行流程图第五节 查看Struts的文档第六节 Struts配置文件的加载顺序的全部内容,希望文章能够帮你解决Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01第一节 框架概述第二节 Struts简介第三节 Struts的环境搭建第四节 Struts执行流程图第五节 查看Struts的文档第六节 Struts配置文件的加载顺序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复