Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01

目录

  • 第一节 框架概述
    • 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
Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第1张图片

1.4 MVC、Servlet、Filter

MVC

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

Servlet

Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第2张图片

Filter

Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第3张图片

  • 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/.
Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第4张图片

3.2 解压后的目录结构

  • 解压zip后的目录结构如下图:
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第5张图片

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
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第6张图片

3.4 第一个Struts项目

  • 目标:集成Struts需要的东西

第一步:创建Eclipse Web工程

小贴士:
这里使用的是Eclipse+Tomcat8.5+jdk1.8环境

  1. 创建一个Web工程,名为day01_struts2_demo01
    首先,你要先打开Eclipse软件,打开后在工具栏依次点击【File】>>>【New】>>>【Dynamic Web Project】,这个就代表新建的项目是WEB项目

小贴士:
如果没有找到【Dynamic Web Project】请看下一步

Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第7张图片

  • 如果我们找不到【Dynamic Web Project】这个选项,说明以前没有建立过WEB项目,所以不在快捷导航里,这时我们点击【Other】这个选项。
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第8张图片

  • 这个界面弹出的是查询窗口,查询的内容是所有我们可以建立的项目类型,比如JAVA项目、WEB项目等,都可以再找个窗口查询得到。

  • 我们是要建立WEB项目,所以在查询输入框里输入【WEB】,下面会列出所有WEB相关的项目,现在,我们知道【Dynamic Web Project】这个类型的项目了,用鼠标选中它,然后点击【Next】按钮。
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第9张图片

  • 这个是填写项目的基本信息,包括项目名、项目运行时服务器版本,你可以选择tomcat或者其他都可以,看你的项目需要,在这里我输入一个【day01_Struts2_demo1】来完成项目的建立,输入完毕后我们点击【Next】按钮
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第10张图片

  • 这个窗口显示的WEB项目中需要编译的JAVA文件的目录,默认是SRC目录,这个我们不需要改,直接点击【Next】
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第11张图片

  • 接着弹出窗口,显示的是我们的WEB项目,WEB文件相关的目录,就是html或者jsp还有js那些web相关的文件存放的目录,默认是【WebContent】,你也可以修改成你想要的文件名,注意,下面有个复选框,表示的是是否要自动生成web.xml文件。

  • web.xml:这个文件是WEB项目的核心文件,也是WEB项目的入口,老版本的Eclipse都会有这个文件,但是新版本的Eclipse因为可以使用在JAVA代码中注解的方式,所以提供让用户选择是否要生成,如果是新手最好选择生成。这里选择生成。

  • 然后我们点击【Finish】
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第12张图片

  • 下面就是我们新建的WEB项目的目录结果

  • JAVA存放目录:SRC

  • WEB文件目录:WebContent

  • WEB配置文件:web.xml

现在,可以开始你的Struts2之旅了!
Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第13张图片

第二步:导jar包

  • 把struts2-blank.war中的lib下所有的包导入自己创建的工程

  • 【Ctrl + a全选、Ctrl + c复制】
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第14张图片

  • 右键lib 【Paste】粘贴进去
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第15张图片

第三步:添加配置文件

  • 把struts2-blank里classes目录下的struts.xml 配置文件拷贝到自己创建工程的src中
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第16张图片
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第17张图片

  • 然后删除struts标签的所有内容,一步步添加struts标签内容的知识
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第18张图片

第四步:配置struts的过滤器

  • web.xml中,配置Filter

<filter>
        <filter-name>struts2filter-name>		
        <filterclass>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterfilter-class>
filter>

<filter-mapping>
        <filter-name>struts2filter-name>
        <url-pattern>/*url-pattern>
filter-mapping>
  • 配置的目的是用于拦截请求,由Struts的规则去处理请求,而不是用以前的servlet去处理

第五步:Tomcat运行Web工程

  • 如果tomcat运行没有报错,就代表配置成功
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第19张图片

3.5 Struts的Action配置

  • 目标:配置一个请求的完整流程

第一步:

  • 在struts.xml中配置package和action,写如下代码
<struts>
	<package name="p1" extends="struts-default">
	
	 	<action name="hello" class="com.it.web.action.HelloAction" method="sayHello">
			
			<result name="success">/success.jspresult>
		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 【能正常访问】
      Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第20张图片
    • http://localhost:8080/day01_struts2_demo01/hello.action 【也能正常访问】
      Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第21张图片
    • http://localhost:8080/day01_struts2_demo01/hello.act 【不能正确访问】
      Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第22张图片
    • 因为struts默认是处理.action的请求,或者不带action也可以,其它后缀的都不会拦截,会放行,如jsp

小贴士:
这里跳转到了sucess.jsp页面,但路径没有改变,内部使用了转发。

3.6 可能出现的问题:struts.xml输入时没有提示

  • 如果struts里没有标签提示

    • 第一种解决办法是电脑联网,会自动搜索struts的dtd
    • 第二种解决办法配置本地dtd,打开偏好设置,安装下面的步骤操作即可
    • struts-2.3.dtd文件可以从struts2-core-2.3.33.jar包内找到
      Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第23张图片
  • 复制这个文件在项目中创建一个dtd文件夹放入
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第24张图片

  • 如果找不到,也可以解压struts2-core-2.3.33.jar在里面找到
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第25张图片

  • 【Windows】>>>【Preferences】打开偏好设置
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第26张图片

Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第27张图片

  • 再将struts.xml中的网址:http://struts.apache.org/dtds/struts-2.3.dtd 复制进去

Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第28张图片

小贴士:
这里就是告诉Eclipse要去网上找dtd的时候优先找本地的

第四节 Struts执行流程图

Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第29张图片

第五节 查看Struts的文档

  • 目标:查找struts的架构图及内部

    • 在线文件:http://struts.apache.org/core-developers/big-picture.
    • 离线文档:struts-2.3.33 /docs/docs/home.html
    • 打开上面两个连接后,然后查找guides -> bigPictrue 执行过程
      Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第30张图片

小贴士:
User created标识的是以后我们经常要写的

第六节 Struts配置文件的加载顺序

6.1 加载时机

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

6.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 不能修改
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。
  • 未开启开发模式报错网页
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第31张图片
  • 开启开发模式后报错网页,有了更多错误信息还定位了错误位置
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第32张图片
  • 在struts.xml文件中配置如下代码即可
<struts>

	<constant name="struts.devMode" value="true">constant>
struts>

6.4 struts-defaults中默认的拦截器分组

  • 如图,默认的包里有一结果类型,如转发和重定向
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第33张图片
  • 如图,默认情况下,struts会使用defaultStack的拦截器分组
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第34张图片
  • struts-defualts中主要的内容
    • 结果类型、拦截器分组,默认使用的接替器分组
      Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第35张图片

6.5 修改struts的访问后缀

第一种方式:

  • 在 struts.xml 的配置文件中添加如下代码:
<constant name="struts.action.extension" value="php">constant>

Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第36张图片

第二种方式:

  • 在src下创建struts.properties
  • 添加struts.action.extension=html
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第37张图片
    Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第38张图片

小贴士:
如果这样配置会覆盖struts.xml的配置
这是由于struts加载文件的顺序所导致

第三种方式:

  • 在web.xml中配置,代码如下:
<filter>
		<filter-name>struts2filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterfilter-class>
		<init-param>
			<param-name>struts.action.extensionparam-name>
			<param-value>jspparam-value>
		init-param>
filter>

Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第39张图片
Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第40张图片

小贴士:
由于struts加载文件的顺序,web.xml会覆盖掉上面2个方法的配置,即使不注释,后缀.php、.html也无法生效了。

Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第41张图片

Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01_第42张图片

你可能感兴趣的:(Struts2,java,软件框架,struts2,后端,编程语言)