zoukankan      html  css  js  c++  java
  • Struts2

    领略下传说中的Struts2,写了个小例子,有点意思。比起.net中的MVC有意思的在于它是你自己一步步去配置实现,想怎么搞就怎么搞,.net的MVC,它干了什么事你完全不知,只不过知道怎么用而已。

    下载的struts2版本为2.3,里头有些小例子,我直接使用了最简单的那个struts2-blank.war里的jar包即可。(这是struts2最基本的jar,其实还有一些可以删除的,比如我删除了log4J)

    1)有以下有个Jar需要引入到lib文件夹:

    asm-3.3.jar
    asm-commons-3.3.jar
    asm-tree-3.3.jar
    commons-fileupload-1.3.1.jar
    commons-io-2.2.jar
    commons-lang3-3.1.jar
    commons-logging-1.1.3.jar
    freemarker-2.3.19.jar
    javassist-3.11.0.GA.jar
    ognl-3.0.6.jar
    struts2-core-2.3.16.1.jar
    xwork-core-2.3.16.1.jar

    2)建一个BaseActionSupport.java

    package com.my.action;
    
    import org.apache.struts2.ServletActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    /**
     * Base Action class for the Tutorial package.
     */
    public class BaseActionSupport extends ActionSupport {
    
        public String getContextPath() {
            return ServletActionContext.getRequest().getContextPath();
        }
    
    }

    3)建一个LoginAction.java

    package com.my.action;
    
    public class LoginAction extends BaseActionSupport {
        
        private String userName;
        private String password;
        
        public String getUserName() {
            return this.userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        
        public String getPassword() {
            return this.password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        
        public String execute() throws Exception {
            return INPUT;
        }
        
        public String signin() {
            if( "admin".equals(getUserName()) && "admin".equals(getPassword()) ) {
                return SUCCESS;
            }
            else {
                return "false";
            }
        }
    }

    4)建一个MainAction.java

    package com.my.action;
    
    public class MainAction extends BaseActionSupport {
        
        public String execute() throws Exception {
            return SUCCESS;
        }
        
    }

    5)在src目录下建一个struts.xml

    <?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="true" />
    
        <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>
            
        </package>
    
        <include file="struts_login.xml"/>
    
        <!-- Add packages here -->
    
    </struts>


    6)在src目录下建一个struts_login.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="login" namespace="/" extends="default">
    
            <action name="login_*" class="com.my.action.LoginAction" method="{1}">
                <result type="redirectAction" name="success">main</result>
                <result type="redirect" name="false">login</result>
                <result name="input">/pages/Login.jsp</result>
            </action>
            <action name="main" class="com.my.action.MainAction">
                <result name="success">/pages/Main.jsp</result>
            </action>
             <action name="*" class="com.my.action.BaseActionSupport">
                <result>/pages/{1}.jsp</result>
            </action>
    
        </package>
    </struts>

    7)建一个jsp:Login.jsp

    <%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    
    <html>
        <head>
        </head>
        <body>
            <form action="login_signin" method="post">
                User name:<input type="text" id="userName" name="userName" /><br/>
                Password:<input type="password" id="password" name="password" /><br/>
                <input type="submit" value="Login" />
            </form>
        <body>
    </html>

     8)建一个jsp:Main.jsp

    <%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    
    <html>
        <head>
        </head>
        <body>
            This is main page.<br/>
            Context Path:${contextPath}<br/>
            Action URL:<s:url action="main"/>
        <body>
    </html>

    9)修改web.xml

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

    因为没有用eclipse,直接使用命令行javac,写了一个bat做编译:build.bat

    @echo off
    set libDir=D:Studyapache-tomcat-7.0.52webapps	estStrutsWEB-INFlib
    set tempClassPath=%classpath%
    set classpath=%libDir%asm-3.3.jar;%classpath%
    set classpath=%libDir%asm-commons-3.3.jar;%classpath%
    set classpath=%libDir%asm-tree-3.3.jar;%classpath%
    set classpath=%libDir%commons-fileupload-1.3.1.jar;%classpath%
    set classpath=%libDir%commons-io-2.2.jar;%classpath%
    set classpath=%libDir%commons-lang3-3.1.jar;%classpath%
    set classpath=%libDir%commons-logging-1.1.3.jar;%classpath%
    set classpath=%libDir%freemarker-2.3.19.jar;%classpath%
    set classpath=%libDir%javassist-3.11.0.GA.jar;%classpath%
    set classpath=%libDir%log4j-1.2.17.jar;%classpath%
    set classpath=%libDir%ognl-3.0.6.jar;%classpath%
    set classpath=%libDir%struts2-core-2.3.16.1.jar;%classpath%
    set classpath=%libDir%xwork-core-2.3.16.1.jar;%classpath%
    @echo on
    javac -d WEB-INFclasses src*.java
    @echo off
    copy src*.xml WEB-INFclasses
    set classpath=%tempClassPath%
    @echo on

    为了使编译后tomcat自动热加载,在tomcat安装目录下的confserver.xml中加入了这句(在<host/>节点内):

    <Context path="/testStruts" docBase="testStruts" reloadable="true" debug="0"></Context>
  • 相关阅读:
    Flask从入门到入土
    flask请求上下文源码分析
    python事件调度库sched
    go中简单使用kafka
    python下使用ElasticSearch
    numpy+pandas+matplotlib+tushare股票分析
    functools模块中partial的使用
    乐观锁与悲观锁
    mysql的服务器构成
    redis事件监听及在订单系统中的使用
  • 原文地址:https://www.cnblogs.com/HD/p/3644585.html
Copyright © 2011-2022 走看看