`

Struts2学习笔记

阅读更多
Struts2学习笔记

1.官网下载包
URL:http://struts.apache.org/
解压:/apps/struts2-blank.war
拷贝:struts.xml+web.xml+jar


2.struts.xml尖括号提示:
a.解压struts2-core-2.3.15.1.jar
b.windows--preferences--catalog--add:
  解压文件中的dtd
  URL
  http://struts.apache.org/dtds/struts-2.3.dtd


3.工作流程图


4.常量配置
struts.xml配置:
    <constant name="struts.i18n.encoding" value="UTF-8"/>
该常量会覆盖struts2-core-2.3.15.jar包中/org.apache.struts2.default.properties中的值


5.jsp引入的标签s
<%@ taglib prefix="s" uri="/struts-tags" %>
这个uri对应该struts2-core-2.3.15.jar包中/META-INF/struts-tags.tld
该文件中:
  <display-name>Struts Tags</display-name>
  <tlib-version>2.3</tlib-version>
  <short-name>s</short-name>
  <uri>/struts-tags</uri>
  处理类:<tag-class>org.apache.struts2.views.jsp.ActionTag</tag-class>
这个uri和此处的uri对应


5.struts.xml以及其他XML配置
<?xml version="1.0" encoding="UTF-8" ?>
1.struts.xml:
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <!-- true:开发模式,修改XML配置文件不用重启服务 -->
    <constant name="struts.devMode" value="false" />
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />

    <package name="default" namespace="/default" extends="struts-default">
        <!-- 公共的跳转页面,所有Action都可以调用该result -->
        <global-results>
            <result name="error">/views/error.jsp</result>
        </global-results>
        
        <!-- 异常错误处理页面 -->
        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>
    </package>

	<!-- xml文件列表 -->
	<include file="/default.xml"/>
        <include file="/home.xml"/>
        <include file="/userInfo.xml"/>
</struts>

extends="struts-default":继承了struts2-core-2.3.15.jar包中struts-default.xml的:
result结果集
Interceptor拦截器等


2.userInfo.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="userInfoPackage" namespace="/" extends="default">
        <action name="userInfo_*" class="com.momo.action.UserInfoAction" method="{1}">
            <result name="success">/views/userInfo/userInfo_{1}_success.jsp</result>
            <result name="fail">/views/userInfo/userInfo_{1}_fail.jsp</result>
        </action>
        
        <!-- 服务其跳转:页面 -->
        <action name="dispatcher">
            <result type="dispatcher">/views/userInfo/dispatcher.jsp</result>
        </action>
        <!-- 客户端跳转:页面 -->
        <action name="redirect">
            <result type="redirect">/views/userInfo/redirect.jsp</result>
        </action>
        <!-- 服务器跳转:Action方法 -->
        <action name="chain">
            <result type="chain">
               <!-- 指定要跳转的Action位置 -->
               <param name="namespace">/</param>
               <param name="actionName">dispatcher</param>
            </result>
        </action>
        <!-- 客户端跳转:Action方法 -->
        <action name="redirectAction">
            <result type="redirectAction">redirect</result>
        </action>
    </package>
</struts>

extends="default":可以共用namespace="default"目录中的结果集result


5.struts.xml配置前台UI标签样式
struts.xml:  
  <constant name="struts.ui.theme" value="simple"/><!-- UI标签类型(ajax,simple,xhtml,css_xhtml) -->

jsp:
	    <s:form>
	       <s:fielderror/>
	    </s:form>
html源码样式会采用最简单的,支持本地覆盖struts2-core-2.3.15.jar包中template中的模板也支持自定义模板


5.拦截器执行过程

模拟原理如下:
Main.java
ActionInvocation.java
Interceptor.java
FirstInterceptor.java
SecondInterceptor.java
Action.java

public class Main {
	public static void main(String[] args) {
		new ActionInvocation().invoke();
	}
}

public class ActionInvocation {
	List<Interceptor> interceptors = new ArrayList<Interceptor>();
	int index = -1;
	Action a = new Action();
	
	public ActionInvocation() {
		this.interceptors.add(new FirstInterceptor());
		this.interceptors.add(new SecondInterceptor());
		
	}
	
	public void invoke() {
		index ++;
		if(index >= this.interceptors.size()) {
			a.execute();
		}else {
			
			this.interceptors.get(index).intercept(this);
		}
	}
}

public interface Interceptor {
	public void intercept(ActionInvocation invocation) ;
}

public class FirstInterceptor implements Interceptor {
	public void intercept(ActionInvocation invocation) {
		System.out.println(1);
		invocation.invoke();
		System.out.println(-1);
	}
}

public class SecondInterceptor implements Interceptor {
	public void intercept(ActionInvocation invocation) {
		System.out.println(2);
		invocation.invoke();
		System.out.println(-2);
	}
}

public class Action {
	public void execute() {
		System.out.println("execute!");
	}
}



5.



5.



5.



5.



5.






分享到:
评论

相关推荐

    struts2学习笔记.doc

    ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

    struts2学习笔记

    ### Struts2学习笔记知识点详解 #### 一、准备工作及实例 **1. 解压struts-2.1.6-all.zip** - **Apps目录**:包含struts2自带的例子程序,供用户学习和参考。 - **Docs目录**:提供官方文档,包括API文档、指南等...

    struts2学习笔记(1)

    ### Struts2学习笔记知识点详解 #### 一、Struts2框架的基本引入步骤 ##### 1. 导入Struts2相关Jar包 在引入Struts2框架时,首先需要将Struts2的相关Jar包导入到项目的类路径中。这些Jar包通常包括核心库以及其他...

    struts 2 学习笔记

    在Struts2中,学习笔记通常会涵盖以下几个关键概念: 1. **源代码查看和Javadoc**:开发者可以通过查看源代码来理解Struts2的工作原理,而Javadoc则提供了API文档,帮助理解类和方法的功能。 2. **包(Package)和...

    struts2学习笔记(完美总结)——转自OPEN经验库

    Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...

    张龙圣思园struts2学习笔记word

    张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置方式以及实战技巧。 首先,让我们深入了解Struts2的核心特性。Struts2是MVC(Model-View-...

    struts2学习笔记总结

    本笔记将全面总结Struts2的核心概念、主要功能以及实际开发中的应用。 一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其存在的问题,如性能和灵活性。Struts2的核心是...

Global site tag (gtag.js) - Google Analytics