IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Struts2学习 -> 正文阅读

[Java知识库]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层框架来说,数据封装比较安全)
?? ?核心技术是拦截器,给开发提供了很多便利
?? ?比如说参数的封装(传值),数据校验,文件上传下载等

后续继续补充

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 11:49:15  更:2021-08-13 11:51:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/4 6:37:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码