天天看点

框架技术,Struts2入门配置

1 什么是框架

框架是一个项目的半成品。在创建项目的时候,先把框架搭建起来,这样项目就完成了一些公共的功能。我们基于框架进行编写项目,就不用再关注公共功能了,只需要去写我们项目跟其他项目不一样的业务就可以。 公共的功能指的是:比如到数据库里面获取数据,再比如,收集表单中的数据。

框架技术,Struts2入门配置

程序开发过程中的半成品,解决项目开发过程中通用的问题,从而提高项目开发效率。

项目 = 框架 + 业务逻辑代码;

2 Struts2框架的介绍

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

Jsp+servlet+javabean

Servlet要做的事情

1.收参。2.参数的类型转换。3.参数封装成实体对象。

4.页面的跳转。视图的名称写死在控制器里面了。这样控制器和视图的耦合性就非常的高。

框架技术,Struts2入门配置

观察struts2官网上提供的资料:

框架技术,Struts2入门配置

3 Struts2的第一个案例

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

  • 1.导入strust2相关的jar包。参考struts-2.3.15.1\apps\struts2-blank\WEB-INF\lib
    框架技术,Struts2入门配置
  • 2.在项目的web.xml里面配置struts2的核心控制器。

    参考struts-2.3.15.1\apps\struts2-blank\WEB-INF\web.xml

  • 3.写控制器类。
    框架技术,Struts2入门配置
  • 4.对action进行配置。 需要你从空项目中去复制一个struts.xml配置文件放入到我们的src文件夹里面。 参考\apps\struts2-blank\WEB-INF\classes\struts.xml

    复制后删除掉该文件中除了跟标签外的所有内容。

    框架技术,Struts2入门配置
  • 5、配置web.xml 作用:让struts2生效
    框架技术,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

框架技术,Struts2入门配置

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中设置关联

框架技术,Struts2入门配置

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文件中。然后转发过去。