领略下传说中的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..jar
commons-io-2.2.jar
commons-lang3-3.1.jar
commons-logging-1.1..jar
freemarker-2.3..jar
javassist-3.11..GA.jar
ognl-3.0..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:\Study\apache-tomcat-7.0.52\webapps\testStruts\WEB-INF\lib
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-INF\classes src\*.java
@echo off
copy src\*.xml WEB-INF\classes
set classpath=%tempClassPath%
@echo on

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

<Context path="/testStruts" docBase="testStruts" reloadable="true" debug="0"></Context>

Struts2 - Study 1的更多相关文章

  1. Struts2 Interceptors

    Alias Interceptor : 别名拦截器 <action name="someAction" class="com.examples.SomeAction ...

  2. Struts2学习第五课 通过和ServletAPI耦合的方式获取WEB资源

    与Servlet耦合的访问方式 直接访问Servlet API将使Action与环境Servlet环境耦合在一起,测试时需要有Servlet容器,不便对Action的单元测试. 直接获取HttpSer ...

  3. Struts2学习第四课 通过Aware接口获取WEB资源

    使用XxxAware接口 看代码: package logan.struts2.study; import java.util.Map; import org.apache.struts2.inter ...

  4. Struts2学习第三课 访问Web资源

    1.什么是WEB资源? HttpServletRequest,HttpSession,ServletContext等原生的Servlet API. 2.为什么访问WEB资源? B/S的应用的Contr ...

  5. 4.Struts2转向类型详解

    struts2中提供了多种视图转向类型,类型由type属性指定,如: dispatcher:请求转发(默认值) redirect:重定向到页面 redirectAction:重定向到Action pl ...

  6. 2.第一个Struts2程序-HelloWorld程序

    1.新建Web Project项目:Study_Struts2 2.新建HelloWordAction.java类 3.复制struts.xml文件到src目录下,配置struts.xml文件内容如下 ...

  7. Struts2常用标签

    Struts2常用标签总结 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的 ...

  8. JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总

    一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出.       1,JSTL标签总结: a).JSTL标签有什么用?          JSTL是由JCP(Java Commu ...

  9. Struts2的标签库(二)——OGNL表达式

    Struts2的标签库(二) --OGNL表达式 1.Struts2中的OGNL表达式增加了ValueStack的支持. 注:ValueStack--实际上是一个容器对象,该对象在启动Struts2框 ...

随机推荐

  1. 【转】C++11中的std::function

    原文地址:http://www.jellythink.com/archives/771 看看这段代码 先来看看下面这两行代码: std::function<void(EventKeyboard: ...

  2. MyEclipse+Struts+Hibernate+Mysql开发环境配置

    软件: jdk-6u22-windows-x64.exe apache-tomcat-6.0.29.exe mysql-5.1.51-winx64.exe myeclipse-8.6.0-win32. ...

  3. 隐藏select最右侧的下拉三角图标的css样式

    -webkit-appearance:none; -moz-appearance:none; appearance:none;

  4. 优秀HTML5活动页面

    一个好的手机活动宣传 更能让人分享 传播是爆炸性的 下面是我平时看到一些好的微信活动宣传页面  分享给大家 其中用到的技术 常做微信活动 专题页面的人 可以看看大神们是怎么做的  这样到自己做的时候 ...

  5. ZOJ-3870 Team Formation

    题目大意:给n个正数,找出满足A^B>max(A,B)的对数. 题目分析: 代码如下: # include<iostream> # include<cstdio> # i ...

  6. JPA的Column注解总结

    就像@Table注解用来标识实体类与数据表的对应关系类似,@Column注解来标识实体类中属性与数据表中字段的对应关系. 该注解的定义如下: @Target({METHOD, FIELD}) @Ret ...

  7. spring之bean的作用域scope的值的详解

    今天研究了一下scope的作用域.默认是单例模式,即 scope="singleton".另外scope还有prototype.request.session.global ses ...

  8. spring beans源码解读之--Bean的定义及包装

    bean的定义,包装是java bean的基础.再怎么强调它的重要性都不为过,因此深入 了解这块的代码对以后的代码研究可以起到事半功倍的功效. 1. Bean的定义BeanDefinition 1.1 ...

  9. OSGi 的由来和本质特性

    OSGi 的由来 随着科技和需求的发展和变化,现在的软件变得越来越庞大.这样,随之而来的最大挑战就是软件在设计上的越来越复杂和维护上的越来越困难.为了解决这个问题,软件架构师将软件切分成比较小的并且易 ...

  10. PCA和Softmax分类比较—Mnist与人脸数据集

    PCA人脸识别中三种方法得到的正确率可达到100% 作为对比,单独使用Softmax回归对人脸40*10*92*112的数据分类正确率为97%. 用PCA对MNIST手写数字10*500*28*28识 ...