Struts2进阶学习4
Struts2进阶学习4
自定义拦截器的使用
核心配置文件
<?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> <package name="index" namespace="/" extends="struts-default" > <interceptors>
<!-- 注册拦截器 -->
<interceptor name="myInter3" class="com.struts2.interceptor.MyInterceptor3"/>
<!-- 注册拦截器栈 -->
<interceptor-stack name="myStack">
<!-- 自定义拦截器在默认之前(方便后面的拦截器对前面的也进行处理) -->
<interceptor-ref name="myInter3">
<!-- 指定哪些方法不拦截 -->
<!--<param name="excludeMethods">add,delete</param>-->
<!-- 指定哪些方法需要拦截 -->
<param name="includeMethods">add,delete</param>
</interceptor-ref>
<!-- 引入struts2自带的20个拦截器 -->
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<!-- 指定默认拦截器 -->
<default-interceptor-ref name="myStack"/> <action name="IndexAction_*" class="com.struts2.action.IndexAction" method="{1}" >
<result name="success" type="dispatcher" >/index.jsp</result>
</action>
</package> <package name="tag" namespace="/" extends="struts-default">
<action name="DemoAction" class="com.struts2.action.DemoAction" method="page" >
<result name="success" type="dispatcher" >/tag.jsp</result>
</action>
</package> </struts>
struts.xml
自定义拦截器的3种方式
package com.struts2.interceptor; import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor; /**
* @author: 肖德子裕
* @date: 2018/11/21 15:48
* @description: 自定义拦截器1
* 拦截器生命周期:随项目启动而创建,随项目关闭而销毁
*/
public class MyInterceptor implements Interceptor {
@Override
public void init() { } @Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
return null;
} @Override
public void destroy() { }
}
(1)
package com.struts2.interceptor; import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.interceptor.Interceptor; /**
* @author: 肖德子裕
* @date: 2018/11/21 15:48
* @description: 自定义拦截器2
*/
public class MyInterceptor2 extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
return null;
}
}
(2)
package com.struts2.interceptor; import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; /**
* @author: 肖德子裕
* @date: 2018/11/21 15:48
* @description: 自定义拦截器3
* MethodFilterInterceptor:方法过滤拦截器
*/
public class MyInterceptor3 extends MethodFilterInterceptor {
@Override
protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
//前处理
System.out.println("before>>>");
//放行
actionInvocation.invoke();
//后处理
System.out.println("after>>>");
//跳转到成功页面
return "success";
}
}
(3)
测试拦截器
package com.struts2.action; import com.opensymphony.xwork2.ActionSupport; /**
* @author: 肖德子裕
* @date: 2018/11/21 15:45
* @description: 测试拦截器的使用
*/
public class IndexAction extends ActionSupport {
public String add(){
System.out.println("添加用户!");
return "success";
}
public String delete(){
System.out.println("删除用户!");
return "success";
}
public String update(){
System.out.println("修改用户!");
return "success";
}
public String find(){
System.out.println("查找用户!");
return "success";
}
}
IndexAction
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>I Love China</h2>
</body>
</html>
index.jsp
测试struts2标签的使用(了解)
package com.struts2.action; import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; import java.util.ArrayList;
import java.util.List; /**
* @author: 肖德子裕
* @date: 2018/11/21 19:34
* @description: 测试struts2标签的使用
*/
public class DemoAction extends ActionSupport {
public String page(){
List<String> list=new ArrayList<>();
list.add("xdzy");
list.add("xdzy");
list.add("xdzy");
list.add("xdzy");
ActionContext.getContext().put("list",list); return SUCCESS;
}
}
DemoAction
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<!-- 循环遍历 -->
<s:iterator value="#list">
<s:property/><br>
</s:iterator>
<hr>
<s:iterator value="#list" var="name">
<s:property value="#name"/><br>
</s:iterator>
<hr>
<s:iterator begin="1" end="100" step="1">
<s:property/>|
</s:iterator> <!-- if,else -->
<s:if test="#list.size()==4">
list长度为4
</s:if>
<s:elseif test="#list.size()==3">
list长度为3
</s:elseif>
<s:else>
默认为0
</s:else>
</body>
</html>
tag.jsp
Struts2进阶学习4的更多相关文章
- Struts2进阶学习3
Struts2进阶学习3 OGNL表达式与Struts2的整合 核心配置文件与页面 <?xml version="1.0" encoding="UTF-8" ...
- Struts2进阶(一)运行原理及搭建步骤
Struts2进阶(一)运行原理 Struts2框架 Struts2框架搭建步骤 致力于web服务,不可避免的涉及到编程实现部分功能.考虑使用到SSH框架中的Struts2.本篇文章只为深入理解Str ...
- PHP程序员进阶学习书籍参考指南
PHP程序员进阶学习书籍参考指南 @heiyeluren lastmodify: 2016/2/18 [初阶](基础知识及入门) 01. <PHP与MySQL程序设计(第4版)> ...
- Matlab 进阶学习记录
最近在看 Faster RCNN的Matlab code,发现很多matlab技巧,在此记录: 1. conf_proposal = proposal_config('image_means', ...
- struts2源代码学习之初始化(一)
看struts2源代码已有一段时日,从今天開始,就做一个总结吧. 首先,先看看怎么调试struts2源代码吧,主要是下面步骤: 使用Myeclipse创建一个webproject 导入struts2须 ...
- Struts2框架学习(三) 数据处理
Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:Value ...
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- Struts2框架学习(一)
Struts2框架学习(一) 1,Struts2框架介绍 Struts2框架是MVC流程框架,适合分层开发.框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计. 2 ...
- zuul进阶学习(二)
1. zuul进阶学习(二) 1.1. zuul对接apollo 1.1.1. Netflix Archaius 1.1.2. 定期拉 1.2. zuul生产管理实践 1.2.1. zuul网关参考部 ...
随机推荐
- Thrift笔记(三)--Thrift框架通信源码分析
Thrift 客户端调用RPC的Demo public static void main(String[] args) throws Exception { TTransport transport ...
- Spring课程 Spring入门篇 4-8 Spring bean装配之基于java的容器注解说明--基于泛型的自动装配
1 解析 1.1 什么是泛型? 1.2 泛型有什么作用? 1.3 泛型装配样式? 2 代码演练 2.1 泛型应用 1 解析 1.1 什么是泛型? Java泛型设计原则:只要在编译时期没有出现警告,那么 ...
- Node中使用mysql模块遇到的问题
Node的mysql模块,本人的感受就是不好用,各种报错,各种坑,有一个问题困扰了我很久,也不知道是不是我使用的方式不对,不过后来用easymysql模块解决了,我才深信这是一个坑. 问题描述: 假设 ...
- Django——stark组件
stark组件是仿照django的admin模块开发的一套组件,它的作用是在网页上对注册的数据表进行增删改查操作. 一.配置 1.创建stark应用,在settings.py中注册stark应用 st ...
- 2018.10.17NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 +100\) 实际得分:\(100 + 100 + 60\) 辣鸡模拟赛.. 5min切掉T1,看了一下T2 T3,感觉T3会被艹爆因为太原了.. 淦了20 ...
- iDempiere 使用指南 使用MRP进行生产及采购排程
Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/ iDempiere官方中文wiki主页 http://wiki.idemp ...
- android startActivityForResult()
举例说我想要做的一个事情是,在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Act ...
- 【Linux】sudo用户权限管理
权力下放 一.权力分配- sudo Sudo是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的"权力",让 他们执行一些只有超级用户或其他特 ...
- android drag
1.Android:Drag and Drop的应用 2.Android 用户界面---拖放(Drag and Drop)(三) 3.Android 用户界面---拖放(Drag and Drop)( ...
- EPS 转 pdf 在线
EPS 转 pdf 在线网站 https://convertio.co/zh/eps-pdf/