Struts2知识点小结(一)
一、struts2简介
1、Struts2是一个基于MVC设计模式的Web应用框架 只要是web层框架 一般就会遵守MVC设计模式
2、struts2与struts1的关系? 没关系 WebWork基于xwork
3、struts2是一个可插拔式框架(解耦) ---通过filter与javaweb结合的
二、struts2快速入门
1、导入jar
struts-2.3.24\apps\struts2-blank\WEB-INF\lib\*.jar
2、配置web.xml Struts2的核心filter
<!-- Struts2的核心filter -->
<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>
3、创建Action
public class QuickAction {
public String execute(){
System.out.println("QuickAction execute runnging.. ...");
return null;
}
}
4、配置struts.xml
位置:src下
约束位置:struts2-core-2.3.24.jar/struts-2.3.dtd
<struts>
<package name="test" namespace="/" extends="struts-default">
<action name="quick" class="com.itheima.action.QuickAction"></action>
</package>
</struts>
5、测试
http://localhost:8080/Struts2Day01/quick
三、struts2的配置文件
1、入口Filter ---StrutsPrepareAndExecuteFilter
Prepare:准备 对应init方法
Execute:执行 对应doFilter
PS:filter与生命周期相关方法:init destroy doFilter
准备工作:
--->StrutsPrepareAndExecuteFilter
--->public void init(FilterConfig filterConfig)
--->dispatcher = init.initDispatcher(config);
--->dispatcher.init();
--->
init_DefaultProperties(); // [1] 加载org/apache/struts2/default.properties文件
init_TraditionalXmlConfigurations(); // [2] 加载struts-default.xml,struts-plugin.xml,struts.xml
init_LegacyStrutsProperties(); // [3] 加载src下的struts.properties文件
init_FilterInitParameters() ; // [6] 加载Struts2的核心Filter分初始化参数
总结:
服务器启动--->创建Filter--->初始化方法init执行---->加载一些列的配置文件
default.properties struts2内置
struts-default.xml struts2内置
struts-plugin.xml struts2内置 struts.xml 自定义 struts.properties 自定义
Filter的init 自定义
注意:如果加载的内容有冲突的话,后加载的内容可以覆盖先加载的内容
2、 default.properties
配置struts2默认常量
struts.i18n.encoding=UTF-8 设置struts2的编码是UTF-8 post不用解决乱码
struts.multipart.maxSize=2097152 限制上传文件大小 2M
struts.action.extension=action,, 访问Action时的扩展名
struts.devMode = false 设置开发模式 默认不开启开发模式 设置为true 修改struts2的内容后不需要重启服务器
3、struts-default.xml
常量
struts-default包
结果跳转类型
interceptors拦截器
4、struts-plugin.xml
5、struts.xml
位置:类加载路径下(src)
见struts.xml文件
6、struts.properties
src自定义properties文件 该文件作用配置常量(等同于struts.xml中的constant)
7、Filter的init
只能配置常量
<filter>
<filter-name>Struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>struts.action.extension</param-name>
<param-value>action,,</param-value>
</init-param>
</filter>
四、struts2的常用API
Action定义的三种方式:
1、POJO充当Action
2、Action类实现Action接口
Action接口提供5个常量
SUCCESS:成功
ERROR:报错
NONE:不进行视图跳转 相当于null
INPUT:跳转到输入视图
LOGIN:跳转登录视图
3、Action类继承ActionSupport类
ActionSupport功能强大
Struts2知识点小结(一)的更多相关文章
- Struts2知识点小结汇总
Struts2部分 1. JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层).业务逻辑层.数据持久层.[其中WEB层会使用前 ...
- Struts2知识点小结(四)--拦截器与注解开发
一.Struts2的拦截器(interceptor) 作用:当请求进入struts2框架后(进入之前可以用filter进行拦截),想对请求进行拦截操作(功能增强.权限控制),需要拦截器组件 1.str ...
- Struts2知识点小结(三)--值栈与ognl表达式
1.问题一 : 什么是值栈 ValueStack 回顾web阶段 数据交互问题? 客户端提交数据 到 服务器端 request接受数据+BeanUtils实体封装 ...
- Struts2知识点小结(二)
一.结果视图的配置 <result name="success">/success.jsp</result> 1.局部结果视图 ...
- C++重要知识点小结---3
C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:http://www.cnblogs.co ...
- C++重要知识点小结---2
C++重要知识点小结--1 :http://www.cnblogs.com/heyonggang/p/3246631.html 1.C++允许程序员声明一个不能有实例对象的类,这样的类惟一的用途是被继 ...
- React及Nextjs相关知识点小结
React及Nextjs知识点小结 函数式组件和类组件区别是什么 1.函数式组件是用于创建无状态的组件,组件不会被实例化,无法访问this中的对象,无法访问生命周期方法,是无副作用的,相比于类组件函数 ...
- 【SpringBoot MQ 系列】RabbitMq 核心知识点小结
[MQ 系列]RabbitMq 核心知识点小结 以下内容,部分取材于官方教程,部分来源网络博主的分享,如有兴趣了解更多详细的知识点,可以在本文最后的文章列表中获取原地址 RabbitMQ 是一个基于 ...
- SpringBoot 系列教程之事务隔离级别知识点小结
SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...
随机推荐
- C++ 判断当前系统x64 or x86
BOOL IsWow64(){ BOOL bIsWow64 = FALSE; //IsWow64Process is not available on all supported versions o ...
- chrome 浏览器调用 ocx 插件(二)
原文:http://blog.csdn.net/wangchao1988ok/article/details/46561537 chrome 版本:43.0.2357.124 之前写过关于 chrom ...
- python 字符串的方法和注释
capitalize() 把字符串的第一个字符改为大写 casefold() 把整个字符串的所有字符改为小写 center(width) 将字符串居中,并使用空格填充至长度 width 的新字符串 c ...
- web 应用请求乱码问题
背景 作为非西欧语系的国家,总是要处理编码问题 使用java编码解码 @Test public void coderTest() throws UnsupportedEncodingException ...
- 通过html导出PDF如何分页
每页一个DIV,加上样式page-break-inside:avoid; 即可分页了 .pdfpage{page-break-inside:avoid;} <div class="pd ...
- bootstrap作为mixin库的应用模式
Bootstrap作为一个非常流行的前端css框架,得到了非常多的应用.一般的使用方法都是直接download bootstrap.css,作为css文件引入到html的markup中,随后直接引用其 ...
- python下载指定的版本包
首先我们很多时候在执行pip的时候是不行的 有时候很难成功,这个时候我们就要想其他的版本了 一.是不是这个包需要指定版本, 比如python2的和mysql链接的是,而python3则是mysqlc ...
- 设计带有placeHolder的TextView
设计带有placeHolder的TextView 效果: 源码: PlaceholderTextView.h 与 PlaceholderTextView.m // // PlaceholderText ...
- WinPE ISO制作
1.安装ADK,然后导出winPE镜像文件和启动文件: 打开 部署和映像工具环境,cd "Windows Preinstallation Environment",运行 copyp ...
- php 代码编写规范
1 编写目的为了更好的提高技术部的工作效率,保证开发的有效性和合理性,并可最大程度的提高程序代码的可读性和可重复利用性,指定此规范.开发团队根据自己的实际情况,可以对本规范进行补充或裁减. 2 整体要 ...