Struts2学习之旅一 你妹的,这么多框架,为啥要用struts2?

1,strust2可以做神马?可带来哪些便利?

  首先,它是一个基于MVC的web应用框架,基于struts1和webwork,合并优化之后的产物。

 

     对于广大用户给它的赞美,这里我简单的翻译一下apache网站下的两段话。

 

Apache Struts 2 is an elegant, extensible framework for creating enterprise-ready Java web applications. The framework is designed to streamline the full development cycle, from building, to deploying, to maintaining applications over time.

Apache Struts 2 was originally known as WebWork 2. After working independently for several years, the WebWork and Struts communities joined forces to create Struts2. This new version of Struts is simpler to use and closer to how Struts was always meant to be.

阿帕奇的struts2项目是一个优雅的,可扩展的框架,可以用来创建为企业准备的javaWeb应用,这个框架被设计来简化整个开发的周期,从构建到部署到维护,贯穿整个软件生命周期的时间段。

阿帕奇struts2最初被叫做WebWork2,独立工作数年之后,webWork和Struts的交流合作促进创造了strust2,这个新版本的struts简化了使用,跟之前我们想要使用的struts很接近。

 

翻译的不好,见谅。从这两段话看出,其实它主要就两个价值点,一个是可扩展性,第二个就是简化了web应用的开发周期。

 

我想随着使用的深入,这两大致命的诱惑会渐渐展现出它的丰姿...

 

2,hello world!

 

 
步骤

第一步:建立一个maven的web项目;

使用myEclipse建立一个maven的web项目,增加源码文件夹,测试源码文件夹;

来点图片解释下:

Struts2学习之旅一 你妹的,这么多框架,为啥要用struts2?_第1张图片

 

Struts2学习之旅一 你妹的,这么多框架,为啥要用struts2?_第2张图片

 

Struts2学习之旅一 你妹的,这么多框架,为啥要用struts2?_第3张图片

第二步:引入必要的依赖;

依次引入日志的依赖,测试的依赖,struts2的核心依赖;

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.7</version>
</dependency>
</dependencies>

第三步:配置web.xml;

到struts2的app中copy一个web.xml的头,然后配置核心过滤器,以及系统的首页;

<?xml version= "1.0" encoding = "UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>研究strust2的使用</display-name>

<context-param>
<param-name>appName</param-name>
<param-value>com.lifc.web.struts2.study</param-value>
</context-param>


<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>*.action</url-pattern>
</filter-mapping>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>

</web-app>

第四步:编写struts.xml;

到struts的app下copy一个简单的过来,然后配置用户的请求和处理类的对应关系。

 

<?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>

<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"/>

<!-- Add packages here -->

</struts>

 

配置访问url和系统的处理类的映射关系;

第五步:MVC ,按照这个顺序编写代码;

首先编写模型,义务处理代码;

然后编写视图,尽量利用struts2提供的ognl标签库和表达式;

最后编写控制器,完成url和视图的对应关系映射和逻辑处理;

 

这个helloWorld没有模型,先来个页面:

 

<%@ page language="java" pageEncoding="UTF-8"%>
<%--
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
--%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title><s:text name="HelloWorld.message"></s:text> </title>

<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>

<h1> <s:property value="message"/></h1>
<br>
<s:url id="url1" action="HelloWorld">
<s:param name="request_locale">en</s:param>
</s:url>
<s:a href="%{url1}">英语</s:a>
<br>
<s:url id="url2" action="HelloWorld">
<s:param name="request_locale">es</s:param>
</s:url>
<s:a href="%{url2}">阿拉伯语</s:a>
</body>
</html>

 

然后来个简单的控制器:

继承ActionSupport,简单的返回succes,直接跳转;

 

package example;

import org.apache.log4j.Logger;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorld extends ActionSupport {

private static final Logger log=Logger.getLogger(HelloWorld.class);

private static final String MESSAGE="helloWorld.message";

private String message;

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

@Override
public String execute() throws Exception {

log.info("HelloWorld.Action 请求进来了...");

setMessage(getText(MESSAGE));

return SUCCESS;
}

}

第六步:测试,运行;

在测试源码文件夹中测试义务代码的正确性;

然后,进行系统的功能测试和性能测试(确保大数据量和访问量的速度,以及健壮性稳定性)

这个例子无业务,直接是一个跳转,到一个jsp,这里不再多做描述。

 
 
 

 

 

3,运行过程

  Struts2学习之旅一 你妹的,这么多框架,为啥要用struts2?_第4张图片

 

4,小结小结,简短的记忆下。

    这个开篇的小文章简单的解释了三个问题,strust2有什么优势?动手做一个基于struts2的java web例子;大致的了解下struts2的运兴流程;这个是以后进行struts2开发的基础和目标,先简单入门,再慢慢搞点小花样,做一个像样的站出来玩玩···欢迎各位struts2高手斧正。

 

15:00:502013-06-08  

       

你可能感兴趣的:(struts2)