1.这是《Struts2-权威指南》第二章的例子

2.博文主要说明在eclipse下如何创建一个struts2项目

3.实现功能:在login.jsp输入用户名和密码,若用户名为scott且密码为tiger则进入welcome.jsp,否则进入error.jsp
 
 
一、新建项目
File/New/Other/Web/Dynamic Web Project/Next/Project name:MyFirstTest/
Next/Next/勾选Generate web.xml descriptor/Finish
 
此时会看到web.xml在WEB-INF目录下
 
二、配置web.xml
 
打开web.xml,修改为:
 
<?xml version="1.0" encoding="GBK"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
 <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>
</web-app>
 
二、下载和安装struts2框架
 
http://struts.apache.org/download.cgi,下载Full Distribution下的struts-2.3.20-all.zip(版本会更新,名字会不同)
解压struts-2.3.20-all.zip,得到struts-2.3.20文件夹,
再解压app子目录下的struts2-blank.war,
把struts2-blank文件夹下的\WEB-INF\lib目录下的所有.jar文件复制到自己项目的\WEB-INF\lib目录下,
在eclipse中Refresh一下,会在Java Resources\Libraries\Web App Libraries下看到所复制的.jar
 
 
三、配置struts.xml
 
在src文件夹下新建XML file,设置名字struts.xml。打开这个struts.xml,切换到Source,把内容改为:
 
<?xml version="1.0" encoding="GBK" ?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- struts是Struts 2配置文件的根元素 -->
<struts>
 <!-- Struts 2的Action必须放在指定的包空间下定义 -->
</struts>
 
四、代码实现
 
在WebContent下新建login.jsp、welcome.jsp、error.jsp
 
1.login.jsp:
 
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
 <head>
  <title><s:text name="登录页面"/></title>
 </head>
 <body>
  <s:form action="Login">
              <s:textfield name="username" label="用户名" />
              <s:textfield name="password" label="密码" />
              <s:submit value="登录"/>
  </s:form>
 </body>
</html>
 
2.welcome.jsp:
 
<%@ page language="java" contentType="text/html; charset=GBK" %>
<html>
 <head>  
  <title>成功页面</title>
 </head>
 
 <body>
  ${sessionScope.user},登陆成功!
 </body>
</html>
 
3.error.jsp:
 
<%@ page language="java" contentType="text/html; charset=GBK" %>
<html>
 <head>
 <title>失败页面</title>
 </head>
 
 <body>
  登陆失败!
 </body>
</html>
 
在src下新建lee包,新建接口Action.java、类LoginAction.java
 
1.Action.java:
 
package lee;
 
public interface Action {
public static final String SUCCESS="success";
public static final String ERROR="error";
public String execute() throws Exception;
}
 
 
2.LoginAction.java:
 
package lee;
 
import com.opensymphony.xwork2.ActionContext;
 
public class LoginAction implements Action {
    private String username;
    private String password;
 
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
 
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
 
    public String execute() throws Exception {
        if (getUsername().equals("scott") && getPassword().equals("tiger") ) {
            ActionContext.getContext().getSession().put("user" , getUsername());
            return SUCCESS;
        } else {
            return ERROR;
        }
    }
}
 
五、修改struts.xml
 
 <?xml version="1.0" encoding="GBK" ?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- struts是Struts 2配置文件的根元素 -->
<struts>
 <!-- Struts 2的Action必须放在指定的包空间下定义 -->
 <package name="myFirstTest" extends="struts-default">
  <action name="Login" class="lee.LoginAction">
   <result name="success">/welcome.jsp</result>
   <result name="error">/error.jsp</result>
  </action>
 </package>
</struts>
 
 
说明:
1.package name可以随意设置
2.login.jsp里的action="Login"对应struts.xml中的action name="Login",相关的class是"lee.LoginAction",
即lee包下的LoginAction.class
3.LoginAction执行自身的execute(),若返回"success"则请求被转发到/welcome.jsp,
若返回"error"则请求被转发到/error.jsp

Structs2下的MyFirstTest的更多相关文章

  1. 初学structs2,简单配置

    一.structs2-demo1项目下新建structs.xml文件,文件名必须是structs 二.package节点配置及其子节点配置 <!--name:单纯给包起个名字,保证和其他包不重名 ...

  2. C++程序结构---1

    C++ 基础教程Beta 版 原作:Juan Soulié 翻译:Jing Xu (aqua) 英文原版 本教程根据Juan Soulie的英文版C++教程翻译并改编. 本版为最新校对版,尚未定稿.如 ...

  3. 初学structs2,表单验证

    一.简单表单验证示例 structs.xml配置 <struts> <package name="validate" namespace="/valid ...

  4. 搭建 structs2 环境

    前言 环境: window 10 ,JDK 1.8 ,Tomcat 7 ,MyEclipse 2014 pro 搭建 SSH 环境的步骤 创建 JavaWeb 项目 导入 structs2 的jar包 ...

  5. 十四、MVC的WEB框架(Structs2)

    一.Structs2中的Session 1.一个是传统的servlet包下的HttpSession,一个是Structs2中自己定义的Session Servlet下的Session获取方法:Serv ...

  6. 十三、MVC的WEB框架(Structs2)

    一.Structs2的应用 Structs2是基于MVC的WEB框架.一般基于框架的程序要运行成功,对于JAR包的版本,配置文件的正确性有着苛刻的要求,一个地方错了,都会导致框架程序运行出错. 1.首 ...

  7. Structs2笔记③--局部类型转换案例

    Structs2的类型转换-局部类型转换 Ognl强大的表达式语言,在导入项目的时候我们导入了ognl.jar包,内有TypeConverter类,struct主要依赖于他进行类型转换. 例子   i ...

  8. Code First 下自动更新数据库结构(Automatic Migrations)

    示例 Web.config <?xml version="1.0" encoding="utf-8"?> <configuration> ...

  9. Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记

    以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...

随机推荐

  1. 【知识】location.search获取中文时候会被编码成一串字符

    [转码] 例如:case.html?id='这个是页面的标题' 当想要使用location.search获取?id='这个是页面的标题'的时候,包含的中文会被编码成一串字符串. 所以我们需要进行解码, ...

  2. [BZOJ1697][USACO2007 FEB]Cow Sorting牛排序:贪心+置换

    分析 一个月前做的一道题补一下题解,就简单写一写吧. 单独考虑每一个循环节,如果只进行内部的调整,最优方案显然是把最小的绕这个循环交换一圈. 但是借助全局最小值可能使答案更优,两种情况取个\(\max ...

  3. [CSP-S模拟测试]:Cicada拿衣服(暴力+乱搞)

    题目传送门(内部题94) 输入格式 第一行两个整数$n,k$,代表衣服的数量和阈值. 接下来一行$n$个数,第$i$个数$a_i$表示每件衣服的愉悦值. 输出格式 输出一行$n$个数,第$i$个数为$ ...

  4. css命名和书写规范

    前言 在项目开发中对于css名字的命名和书写老是感觉很混乱,这对于代码的可读性以及维护提出了挑战,所以在闲暇之余看了一些这方面的内容,现总结如下... 1.命名规则说明 所有的命名最好都小写 属性的值 ...

  5. 4、kubernetes资源清单快速入门190625

    一.资源清单概念 资源/对象的类型 工作负载型资源:Pod, ReplicaSet, Deployment, StatefulSet, DaemonSet, Job, Cronjob, ... 服务发 ...

  6. ffmpeg保持原视频画面比例 自动添加黑边

    ffmpeg保持原视频画面比例 自动添加黑边 例如源是1280*528要转成640*480要保持画面比例实际上应该640*264 所以需要在上下都加黑边 ffmpeg -i d:/Media/e.f4 ...

  7. 送书福利| Python 完全自学手册

    前言 这里不讨论「能不能学,要不要学,应不应该学 Python」的问题,这里只会告诉你怎么学. 首先需要强调的是,如果 Python 都学不会,那么我建议你考虑别的行业,因为 Python 之简单,令 ...

  8. Python 笔试集(1):关于 Python 链式赋值的坑

    前言 Python 的链式赋值是一种简易型批量赋值语句,一行代码即可为多个变量同时进行赋值. 例如: x = y = z = 1 链式赋值是一种非常优雅的赋值方式,简单.高效且实用.但同时它也是一个危 ...

  9. CentOS7 yum报 Cannot retrieve metalink for repository: epel/x86_64. Please verify its path解决方法

    打开/etc/yum.repos.d/epel.repo,将 [epel] name=Extra Packages for Enterprise Linux 6 – $basearch baseurl ...

  10. FLUME安装&环境(二):拉取MySQL数据库数据到Kafka

    Flume安装成功,环境变量配置成功后,开始进行agent配置文件设置. 1.agent配置文件(mysql+flume+Kafka) #利用Flume将MySQL表数据准实时抽取到Kafka a1. ...