zoukankan      html  css  js  c++  java
  • Struts 2开讲了!!!

    首先我们要知道我们为什么要学习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>  

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

  • 相关阅读:
    SSLZYC 洛谷P2055 假期的宿舍
    SSLZYC 2601 (洛谷P1756)【24题】飞行员配对方案问题
    SSLZYC POJ 3264 平衡的阵容
    SSLZYC 2432 面积最大
    SSLZYC 2433 文件名排序
    Structure of a C program: Preprocessor directives (#include <stdlib.h>, #define)
    Basic vim Commands
    UNIX Copying Files Remotely Examples(scp/pscp)
    ssh command in Linux with Example
    UNIX Copying a File
  • 原文地址:https://www.cnblogs.com/System-out-println/p/5823170.html
Copyright © 2011-2022 走看看