一、自定义拦截器
1、拦截器3种创建方式
(1)实现 Interceptor接口
/**
* 拦截器第一种创建方式
*
* @author Administrator 拦截器生命周期:随项目的启动而创建,随项目关闭而销毁
*/
public class MyInterceptor implements Interceptor {
@Override
// 销毁方法
public void destroy() {
// TODO Auto-generated method stub
}
@Override
// 初始化方法
public void init() {
// TODO Auto-generated method stub
}
@Override
// 拦截方法
public String intercept(ActionInvocation arg0) throws Exception {
// TODO Auto-generated method stub
return null;
}
}
(2)继承AbstractInterceptor
/**
* 拦截器第二种创建方式:继承AbstractInterceptor
* @author Administrator
* 帮我们空实现了init和destroy方法,我们如果不需要实现这两个方法,就可以只实现intercept方法
*/
public class MyInterceptor2 extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation arg0) throws Exception {
// TODO Auto-generated method stub
return null;
}
}
(3)继承MethodFilterInterceptor
/**
* 拦截器第三种创建方式:继承MethodFilterInterceptor 方法过滤拦截器
* @author Administrator
* 功能:定制拦截器拦截的方法 定制需要拦截的方法 定制哪些方法不需要拦截
*/
public class MyInterceptor3 extends MethodFilterInterceptor{
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
//前处理
System.out.println("MyInterceptor3前处理");
//放行
invocation.invoke();
//后处理
System.out.println("MyInterceptor3后处理");
//不放行,直接跳转一个结果页面,不执行后续的拦截器以及Action,直接交给Result处理页面结果进行页面跳转
return "success";
}
}
2、拦截器配置介绍
struts.xml3、定制拦截方法
struts.xml
4、定义全局结果集
二、Struts2标签
1、Struts2标签结构
2、struts2标签演示
(1)iterator标签 if elseif else标签 property标签配合ognl表达式页面取值
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- -----------iterator---------- -->
<!-- 遍历标签 iterator -->
<s:iterator value="#list">
<s:property />
<br />
</s:iterator>
<br />
<s:iterator value="#list" var="name">
<s:property value="#name" />
<br />
</s:iterator>
<s:iterator begin="1" end="100" step="1">
<s:property />|
</s:iterator>
<!-- -----------if elseif else---------- -->
<hr>
<s:if test="#list.size()==4">
list长度为4
</s:if>
<s:elseif test="#list.size()==3">
list长度为3
</s:elseif>
<s:else>
list长度为其他值
</s:else>
<!-- -----------property配合ognl表达式页面取值---------- -->
<hr>
<s:property value="#list.size()" />
</body>
</html>
(2)表单标签等
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- struts2表单标签 -->
<!--
好处1:内置了一套样式
好处2:自动回显,根据栈中的属性
theme:指定表单主题 xhtml:默认 simple:没有主题
-->
<s:form action="Demo3Action" namespace="/" theme="xhtml">
<s:textfield name="name" label="用户名"></s:textfield>
<s:textfield name="password" label="密码"></s:textfield>
<s:radio list="{'男','女'}" name="gender" label="性别"></s:radio>
<s:radio list="#{1:'男',0:'女'}" name="gender" label="性别"></s:radio>
<s:checkboxlist list="#{2:'抽烟',1:'喝酒',0:'烫头'}" name="habit" label="爱好"></s:checkboxlist>
<s:select list="#{2:'吃饭',1:'睡觉',0:'打豆豆'}" headerKey="" headerValue="---请选择---" name="point" lable="特长"></s:select>
<s:file name="photo" label="头像"></s:file>
<s:textarea name="desc" lable="个人简介"></s:textarea>
<s:submit value="提交"></s:submit>
</s:form>
<s:actionerror/>
</body>
</html>
Human life is ephemera, which makes it precious.
生命短暂,所以珍贵。