首先我们要知道我们为什么要学习Struts2这门技术?

Struts2是java程序员所必需学习的一门技术几乎面试都会提起!

 

Struts英文单词是什么意思,怎么理解?

翻译:支柱,支杆,来源于建筑和旧式飞机使用的金属支架。在软件开发中Struts也是一个非常优秀的框架。

关于Struts2的背景有哪些?

Struts刚开始是Jakarta项目中的一个子项目后来转到了Apache软件基金会(Apache Software Foundation)

的开源项目。Struts是流行和成熟的基于MVC设计模式的Web应用程序框架。

使用Struts的目的是什么?

为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。

*********************************************************************

MVC模式

MVC是模型视图控制器(Model View Controller),一种软件设计典范,用一种业务逻辑,数据,界面显示分离的方

法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑

Controller:控制器;View:视图;Model:模型。

MVC流程图:

 

 Struts发展历史

Struts2之前是不是有Struts1?

Struts1是2001年发布的,目前仍有公司再用Struts1框架,Struts2是2007年发布的,相比Struts1而言后者已经有了全新的改革,但是他不是一个全新的框架他是WebWork这个框架上升级的。简单的说Struts2没有继承Struts1的特点而是继承了WebWork这个框架的特点。所以用一句话来总结Struts2是不一个全新的框架,稳定性,性能等各个方面都有很好的保证同时吸收了Struts1和WebWork两者的优势

 Apache Struts2的环境需求如下:

在Struts2中我们会用到注解所以JDK必需是1.5之上。

 

 

***********************下面我们就来实现struts2的第一个小例子吧!****************************

 

第一步:创建Web工程 ,引入Struts2的Jar包!!

struts2-core-xxx.jar:Struts2框架的核心类库

xwork-core-xxx.jar:XWork类库,Struts2的构建基础

ognl-xxx.jar:Struts2使用的一种表达式语言类库

freemarker-xxx.jar:Struts2的标签模板使用类库

javassist-xxx.GA.jar:对字节码进行处理

commons-fileupload-xxx.jar:文件上传时需要使用

commons-io-xxx.jar:Java IO 扩展

Commons-lang-xxx.jar:包含了一些数据类型的工具类

 接下来我们创建一个helloWorld的JSP页面

 

 

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!-- 导入Struts2标签库 -->
<%@taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'HelloWorld.jsp'</title>
    
  </head>
  
  <body>
   <div>
   <h1>
   <!-- 显示Struts Action 中message的属性内容 -->
   <s:property value="message"/>
   </h1>
   
   </div>
   <hr/>
   <div>
   <form action="helloWorld.action"method="post">
       请输入您的姓名:
  <input name="name" type="text"   />
  <input type="submit" value="提交" />
   
   </form>
   </div>
  </body>
</html>

其次创建Action类

package cn.jbit.strutsdemo;

import com.opensymphony.xwork2.Action;

public class HelloWorldAction implements Action {

    //用户输入的姓名
    private String name="";
    //向用户显示的信息
    private String message="";
    
    /**
     * execute方法,当Struts2处理用户请求时,在默认配置下调用的方法
     * @return
     */
    
    
    @Override
    public String execute() throws Exception {
        this.setMessage("你好,"+this.getName()+"!!");
        //处理完毕后返回你好加姓名
        return "success";
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMessage() {
        return message;
    }

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

}

然后我们在Web.xml文件中配置过滤器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>HelloWord</display-name>
  <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>
<welcome-file-list>
<welcome-file>HelloWorld.jsp</welcome-file>
</welcome-file-list>
</web-app>

最后我们在SRC目录下创建一个struts2的配置文件内容如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
    <!-- developerment Mode:开发模式以后修改下面配置,不需要重新启动Tmocat服务器 -->
    <constant name="struts.devMode" value="true" />
    <!-- 创建一个default包,继承自Struts 2 的struts 2的struts-deafult包 -->
    <package name="default" namespace="/" extends="struts-default">
        
        <action name="LoginAction" class="cn.jbit.strutsdemo.LoginAction">
            <!-- 结果为“success”时跳转至helloworld.jsp页面 -->
            <result name="success">login/success.jsp</result>
            <result name="login">login/login.jsp</result>

        </action>
        
        
        <!-- 接收处理用户的/helloWorld.action请求,并根据返回结果,完成跳转 -->
        <action name="helloWorld" class="cn.jbit.strutsdemo.HelloWorldAction">
            <!-- 结果为“success”时跳转至helloworld.jsp页面 -->
            <result name="success">HelloWorld.jsp</result>

        </action>

    </package>

</struts>  

 这样我们的第一个案例就完成了,快动手试一下吧