(一)Struts2简介+基础的配置

简介:

Struts 是 Apache软件基金会(ASF)赞助的一个开源项目。它最初是 Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用 Java Servlet/JSP 技术,实现了基于Java EE Web应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。

在 Struts 中,已经由一个名为 ActionServlet 的 Servlet 充当 控制器(Controller)的角色,根据描述模型、视图、控制器对应关系的 struts-config.xml 的配置文件,转发视图(View)的请求,组装响应数据模型(Model)。在 MVC 的 模型Model)部分,经常划分为两个主要子系统(系统的内部数据状态改变数据状态的逻辑动作),这两个概念子系统分别具体对应 Struts 里的 ActionForm 与 Action 两个需要继承实现超类。在这里,Struts 可以与各种标准的数据访问技术结合在一起,包括Enterprise Java Beans(EJB), JDBC 与 JNDI。在 Struts 的视图View) 端,除了使用标准的JavaServer Pages(JSP)以外,还提供了大量的标签库使用,同时也可以与其他表现层组件技术(产品)进行整合,比如 Velocity Templates,XSLT 等。通过应用 Struts 的框架,最终用户可以把大部分的关注点放在自己的业务逻辑(Action)与 映射关系的配置文件(struts-config.xml)中。

在 Java EE 的Web应用发展的初期,除了使用 Servlet 技术以外,普遍是在 JavaServer Pages (JSP)的源代码中,采用 HTML 与 Java 代码混合的方式进行开发。因为这两种方式不可避免的要把表现与业务逻辑代码混合在一起,都给前期开发与后期维护带来巨大的复杂度。为了摆脱上述的约束与局限,把业务逻辑代码从表现层中清晰的分离出来,2000年,Craig McClanahan 采用了 MVC 的设计模式开发Struts。后来该框架产品一度被认为是最广泛、最流行 JAVA 的 WEB 应用框架。

2006年,WebWork 与 Struts 这两个优秀的Java EE Web框架(Web Framework〕的团体,决定合作共同开发一个新的,整合了 WebWork 与 Struts 优点,并且更加优雅、扩展性更强的框架,命名为 “Struts 2”,原Struts的1.x 版本产品称为“Struts 1”。

至此,Struts项目并行提供与维护两个主要版本的框架产品——Struts 1 与 Struts 2。

Struts1 JavaDoc:http://www.oschina.net/uploads/doc/struts-1.3.9/index.html
Struts2 JavaDoc:http://www.oschina.net/uploads/doc/struts-2.1.2/index.html


基础配置:

http://struts.apache.org/download.cgi#struts2312

在此下载Struts2的jar包,最好下载Full Distribution.

struts-2.3.1.2-all\struts-2.3.1.2\apps\struts2-blank.war

拖出war包中的jar包,web.xml,struts.xml

基本就搭成了一个Struts2的简易项目.

1.web.xml中的配置解释:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!-- 下面是Struts2的配置 -->
  <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  <!-- Struts2配置完成 -->
</web-app>

上面的过滤器中的2个都是定式,无需修改.


2.struts.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>
	<!-- 
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />

    <package name="default" namespace="/" extends="struts-default">

        <default-action-ref name="index" />

        <global-results>
            <result name="error">/error.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>

        <action name="index">
            <result type="redirectAction">
                <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
        </action>
    </package>

    <include file="example.xml"/>
	-->
	<!-- 下面是设定开发模式,设定为true,方便修改action name后的热部署 -->
	<constant name="struts.devMode" value="true" />
	<!-- package区分包,namespace是访问路径,如 name是user,namespace就是/user,按模块划分 -->
	<!-- namespace不写,就等于namespace="",URL为任意项目名/xxx下的index -->
	<package name="default" namespace="/" extends="struts-default">
		<!-- action name is Visit URL's path,you can write 'hello.jsp' or 'hello' 
			or 'hello.action' -->
		<action name="hello">
			<!-- result不写name,其实name就是 name="success" -->
			<result>
				/hello.jsp
			</result>
		</action>
		<!-- 如果不写class,默认执行的是Action所要继承的类:ActionSupport -->
		<action name="hello" class="org.credo.action.IndexAction">
			<!-- result不写name,其实name就是 name="success" -->
			<result>
				/hello.jsp
			</result>
		</action>
	</package>
	
    <!-- Add packages here -->
	
</struts>

这个xml里的很多东西,我都写了注释,具体的配置后面还是有的.


3.action类:

package org.credo.action;

import com.opensymphony.xwork2.ActionSupport;

public class IndexAction extends ActionSupport{
	/**
	 * 企业开发一般都必须使用继承ActionSupport接口来做.
	 */
	private static final long serialVersionUID = 1L;

	public String execute(){
		return "success";
	}

}

默认执行的方法是execute.是在struts中,不指定method参数的情况下去执行这个方法.

一般都是继承actionSupport类.

下面的不推荐使用,忘记即可:

package org.credo.action;

import com.opensymphony.xwork2.Action;

public class IndexAction2 implements Action{
	/**
	 *这个方法一般不会使用.以及第三种方法:自己写execute,不去实现/继承action/actionSupport.
	 */
	
	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return "success";
	}
	
}


4.UI页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>

主要是加入struts2的标签库.


至此,这个就是Struts2的趋形.

你可能感兴趣的:(设计模式,exception,struts,Webwork,action,javadoc)