Struts2学习

一、Struts2概述

Struts2是Apache公司出品的一款优秀的Web层框架,实现了MVC思想,基于过滤器,核心功能是拦截器,给开发提供了很大的便利。
如:参数拦截器、类型转换拦截器等,实现数据的类型转换、校验、国际化等。
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

二、创建Struts2工程的步骤?

    (1) 导入struts所需的jar包
    (2) web.xml中配置Struts核心过滤器
    (3) 将struts.xml文件导入src包
    (4) 创建Action,进行业务逻辑处理
    (5) struts2.xml具体配置

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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>1009struts</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>struts</filter-name>
   		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
   </filter>
   <filter-mapping>
   		<filter-name>struts</filter-name>
   		<url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app>

struts2.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>
	<!--struts.xml文件名称是固定的,且必须存放于src包  -->
	<package name="a" extends="struts-default" namespace="/">
	<!--package:一个struts.xml文件中可以定义多个
			作用:管理action
			name:package的名称,自定义,多个package的name不可重复
			extends:继承struts-default包,能够使用Struts框架中提供的核心功能
			namespace:命名空间,和action节点中的name共同构成了访问路径
	-->
		<action name="ta_*" method="{1}" class="com.xxx.action.TestAction">
		<!--action:
				作用:将Java类与请求时所用的访问路径进行映射
				name:对应访问路径
				method:对应要执行的方法
				class:对应该方法所在Java类的全类名 
		 -->
			<result name="ok" type="dispatcher">/b.jsp</result>
			<!--result:
				作用:针对每一个方法的返回值,相应地匹配要展示的画面
				name:对应方法的返回值
				type:不具体声明时,默认跳转方式为dispatcher,即转发。
				redirect:重定向到jsp    <result name="guarantyId" type="redirect">GrtGBasicInfoAction_getByIdDetailView.action?guarantyId=${guarantyId}&amp;gageType=${gageType}&amp;view=view</result>
				chain:转发到action
				redirectAction:重定向到action
			注意:在result中指定跳转的目标页面时,页面名称前要加"/"  
			-->
			<result name="okk" type="dispatcher">/c.jsp</result>
		</action>
<!-- 		<action name="t1" method="test1" class="com.xxx.action.TestAction"> -->
<!-- 			<result name="ok" >/b.jsp</result> -->
<!-- 		</action> -->
<!-- 		<action name="t2" method="test2" class="com.xxx.action.TestAction"> -->
<!-- 			<result name="okk">/c.jsp</result> -->
<!-- 		</action> -->
	</package>
	
	<package name="P" extends="struts-default" namespace="/P">
		<action name="ttt_*" method="{1}" class="com.xxx.action.TestAction">
			<result name="ok2">/add.jsp</result>
		</action>
	</package>
	
	<include file="user_struts.xml"></include>
	
</struts>

三、具体struts.xml配置?

    (1) struts.xml文件名称是固定的,且必须存放于src目录下
    (2) package:一个struts.xml文件中可以定义多个
        作用:在struts2中管理action
            name:package的名称,多个package的name不可以重复
            namespace:命名空间,和action节点中的name属性,共同构成了访问路径
            extends:继承struts-default包,能够使用struts2框架中
                提供的核心功能。一般情况下任何包都要继承struts-default
    (3) action:
        作用:将后台Java类与请求时所用的访问路径进行映射
            name:指action名称,同一个package中的action之间name不可重复
            method:指具体要执行的Action(后台Java类)中的方法
            class:指要执行的Action对应的全类名
    (4) result:结果视图
        作用:针对后台中每一个方法的返回值,相应地指定该方法执行成功后要展示页面
            name:对应Action(后台Java类)中方法的返回值
            type:指定下一步请求方式
                不指定type时,默认值:dispatcher,即转发到jsp
                redirect,即重定向到jsp
                redirectAction,即重定向到Action中的方法
                chain,即转发到Action中的方法
            注意!!!在result中指定跳转的目标页面名称时,前面要加"/"
    (5) include:主要用于struts配置文件业务划分,
            不同的业务模块可以分开配置
            最终在struts.xml文件中,通过include引入
        作用:提高struts代码可读性

四、Strust2执行的流程?

客户端(浏览器)发送请求时:
    (1) 过滤器
    (2) 加载struts.xml文件(根据画面上的href或action内容,到struts.xml文件中,找到相应的action)
    (3) 根据action中的class,进入指定的Action类
    (4) 根据action中的method,执行Action类中的指定方法Action中方法的返回值类型为字符串,且为无参方法
    (5) 根据Action中方法返回的字符串,到action节点内result中找到相应的name,跳转到该result指定的画面

五、如何动态地配置struts中的action?

	<action name="book_*" method="{1}" class="com.easy.action.BookAction">
	</action>

	<a href="Book/book_addBook">添加</a><br>
	<a href="Book/book_updateBook">修改</a><br>

	name:*之前为统一格式
	method:占位符的形式,匹配Action中的方法,必须为{1}

六、Action中向页面传递数据的方法?

	获取到request:
	      HttpServletRequest request = ServletActionContext.getRequest();
	或获取到session:
	      HttpSession session = request.getSession();
	将数据通过request发送到下一画面
	      request.setAttribute("student", student);

七、struts2总结?

    作用于web层,基于过滤器实现的。
    有利于数据隔离(相对其他web层框架来说,数据封装比较安全)
    核心技术是拦截器,给开发提供了很多便利
    比如说参数的封装(传值),数据校验,文件上传下载等

后续继续补充

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杀神lwz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值