框架技术,Struts2入门配置

1 什么是框架

框架是一个项目的半成品。在创建项目的时候,先把框架搭建起来,这样项目就完成了一些公共的功能。我们基于框架进行编写项目,就不用再关注公共功能了,只需要去写我们项目跟其他项目不一样的业务就可以。 公共的功能指的是:比如到数据库里面获取数据,再比如,收集表单中的数据。
在这里插入图片描述
程序开发过程中的半成品,解决项目开发过程中通用的问题,从而提高项目开发效率。
项目 = 框架 + 业务逻辑代码;

2 Struts2框架的介绍

Struts2框架用来完成MVC模式中控制器(Controller)部分,替换原项目中Servlet(XxxAction)部分代码。

Jsp+servlet+javabean
Servlet要做的事情
1.收参。2.参数的类型转换。3.参数封装成实体对象。
4.页面的跳转。视图的名称写死在控制器里面了。这样控制器和视图的耦合性就非常的高。
在这里插入图片描述
观察struts2官网上提供的资料:
在这里插入图片描述

3 Struts2的第一个案例

从浏览器发出一个请求,请求进入struts2的控制器,在控制器里面打印一句hello Struts2。页面跳转到一个index.jsp里面。

  • 1.导入strust2相关的jar包。参考struts-2.3.15.1\apps\struts2-blank\WEB-INF\lib
    struts2需要的jar包
  • 2.在项目的web.xml里面配置struts2的核心控制器。
    参考struts-2.3.15.1\apps\struts2-blank\WEB-INF\web.xml
  • 3.写控制器类。
    在这里插入图片描述
  • 4.对action进行配置。 需要你从空项目中去复制一个struts.xml配置文件放入到我们的src文件夹里面。 参考\apps\struts2-blank\WEB-INF\classes\struts.xml
    复制后删除掉该文件中除了跟标签外的所有内容。
    在这里插入图片描述
  • 5、配置web.xml 作用:让struts2生效
    在这里插入图片描述
  • 6.测试。访问路径为: http://ip:port/appName/namespace/actionName

4、开发细节

1.struts.xml的配置

	package标签和java中package的作用类似
	java包package的作用:对class进行分门别类的管理 可以省略
	
	struts2中package作用:对action进行分门别类的管理 不能省略
	                    把相同模块的action放置到同1个包下
	                   方便后期的维护工作          
	        name:为 package标签起一个名字,作为唯一标识用 随便写
            extends:要继承的父包 struts-default默认父包(规范)
            
      http://localhost:8989/struts2-day01/first      
<struts>

	 <package name="first" extends="struts-default">
	 <!-- 	请求转发的跳转 -->
	 	<action name="testdis" class="com.macw.action.first.test">
	 		<result name="ok" type="dispatcher">/index.jsp</result>
	 	</action>
	<!-- 重定向 -->	 	
	 	<action name="red" class="com.macw.action.first.test">
	 		<result name="ok" type="redirect">/index.jsp</result>
	 	</action>
	 </package>
	 
	 <package name="test02" extends="struts-default" namespace="/test">
	 	<action name="ok_*" class="com.macw.action.first.test" >
	 		<result name="m1">/index.jsp</result>
	 	</action>
	 
	 </package>

2、Struts2的工具类:ServletActionContext
用于获取Servlet中的request和response
在这里插入图片描述

5、补充:

1. action的访问方式:
a) http://ip地址:port/项目名/name属性值
http://localhost:8989/struts2-day01/login
b) http://ip地址:port/项目名/name属性值.action
http://localhost:8989/struts2-day01/login.action

2. MyEclipse中添加struts.xml的智能提示
Dtd(Document tType Define)文档类型定义
通常用于约束一个xml文件可以出现的内容以及次序。
A)从struts-core.jar中解压缩出struts-2.3.dtd
B)在MyEclipse中设置关联
在这里插入图片描述

5、 Struts2的底层的大致执行过程:

1.项目接受到所有的请求,请求都会去运行StrutsPrepareAndExecuteFilter
2.在过滤器中request.getRequestURi();得到/appName/namespace/actionName
3.通过字符串截断分别获取到请求的namespace和actionName
4.通过io读取struts.xml,通过namepace和actionName获取到ActionClass。
5.拿到actionClass通过反射生成一个Action对象。
6.调用action对象的execute方法,得到一个字符串。
7.再去读struts.xml看第六步的字符串对应到了哪一个jsp文件中。然后转发过去。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/MacWx/article/details/93386158