功能实现:实现登陆功能,输入用户名和密码,如果用户名不为hello或者密码不为world,便返回登陆页并提示错误,否则显示登陆结果。

1.打开MyEclipse,创建一个webProject项目。

2.导入包。

3.打开WebRoot\WEB-INF\web.xml,添加过滤器。

View Code

1 <filter>
2     <filter-name>struts2</filter-name>
3     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
4 </filter>
5 <filter-mapping>
6     <filter-name>struts2</filter-name>
7     <url-pattern>/*</url-pattern>
8 </filter-mapping>

4.创建login.jsp登陆页面。

View Code

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%@ taglib prefix="s" uri="/struts-tags" %>
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6     <title>Login page</title>
 7   </head>
 8
 9   <body>
10     <s:form action="login">
11         <s:textfield name="username" label="username"></s:textfield>
12         <s:textfield name="password" label="password"></s:textfield>
13         <s:submit label="submit"></s:submit>
14     </s:form>
15   </body>
16 </html>

5.创建com.vincent.action包,创建一个LoginAction类,继承ActionSupport类。增加username和password成员变量和其get、set方法,并重写execute方法(判断用户名和密码是否正确)。查看struts2的api文档,可以看到ActionSupport类实现了Action接口,在Action接口中定义了INPUT、SUCCESS等枚举,实际上SUCCESS就等于String值的“success”。

View Code

 1 package com.vincent.action;
 2
 3 import com.opensymphony.xwork2.ActionSupport;
 4
 5 public class LoginAction extends ActionSupport {
 6
 7     private String username;
 8     private String password;
 9     public String getUsername() {
10         return username;
11     }
12     public void setUsername(String username) {
13         this.username = username;
14     }
15     public String getPassword() {
16         return password;
17     }
18     public void setPassword(String password) {
19         this.password = password;
20     }
21     @Override
22     public String execute() throws Exception {
23
24         if("hello".equals(username)&&"world".equals(password)){
25             return SUCCESS;
26         }
27
28         return INPUT;
29     }
30 }

6.创建结果页面result.jsp

View Code

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%@ taglib prefix="s" uri="/struts-tags" %>
 3
 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 5 <html>
 6   <head>
 7     <title>Result page</title>
 8   </head>
 9
10   <body>
11     username:<s:property value="username"/><br>
12     password:<s:property value="password"/>
13   </body>
14 </html>

7、在src目录下创建struts.xml文档(在src目录下创建的文档在配置中IDE会自动copy到classes目录下,实际运行中查找的是classes目录下文件)。

View Code

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4     "http://struts.apache.org/dtds/struts-2.0.dtd">
 5 <struts>
 6     <package name="login" extends="struts-default">
 7         <action name="login" class="com.vincent.action.LoginAction">
 8             <result name="input">/login.jsp</result>
 9             <result name="success">/result.jsp</result>
10         </action>
11     </package>
12 </struts>

转载于:https://www.cnblogs.com/jayhuecko/archive/2012/06/06/2538699.html

Struts2学习日记(二)简单的Struts2登陆实现(Action继承ActionSupport类)相关推荐

  1. Struts2学习总结二

    Struts2框架学习 Struts2学习总结二 1.请求封装参数 1.1.动作类作为实体模型 1.1.1.创建UserAction类 1.1.2.创建struts.xml并编写 1.1.3.编写we ...

  2. OGRE+CG学习日记[1]-简单的3D程序

    OGRE+CG学习日记[1]-简单的3D程序 终于有时间开始研究OGRE和CG这些3D技术方面的东西了 先对今天的成果进行一下简单介绍 ­ 创建一个OGRE窗口,在里面放入一个怪兽头模型 ­ 写一个输 ...

  3. Struts2实现Preparable接口和【struts2】继承ActionSupport类

    Struts2实现Preparable接口 实现preparable接口,实现public void prepare() throws Exception 方法.当你访问某问action指定方法之前, ...

  4. 《游戏人工智能编程》学习笔记二——简单的有限状态机

    1.有限状态机的定义 定义:一个有限状态机是一个设备,或是一个设备模型,具有有限数量的状态,它可以在任何给定的时间根据输入进行操作,使得从一个状态变换到另一个状态,或者是促使一个输出或者一种行为的发生 ...

  5. Python学习日记(二十五) 接口类、抽象类、多态

    接口类 继承有两种用途:继承基类的方法,并且做出自己的改变或扩展(代码重用)和声明某个子类兼容于某基类,定义一个接口类interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子 ...

  6. C++学习日记3——友元、运算重载符、继承、多态

    目录 一.友元 1.1 通俗解释 1.2 编程解释 1.3 友元的关键字 1.4 友元的三种实现 1.4.1 全局函数做友元 1.4.2 类做友元 1.4.3 成员函数做友元 二.运算重载符 2.1 ...

  7. struts2学习笔记二--准备struts2的学习和开发环境

    准备struts2的学习和开发环境 1 导包 2 参照开发包自带的例子在web.xml文件中配置 3 参照开发包自带的例子编写Action类和配置struts.xml文件 <struts> ...

  8. Python学习日记(二十八) hashlib模块、configparse模块、logging模块

    hashlib模块 主要提供字符加密算法功能,如md5.sha1.sha224.sha512.sha384等,这里的加密算法称为摘要算法.什么是摘要算法?它又称为哈希算法.散列算法,它通过一个函数把任 ...

  9. 微信开发学习日记(二):3个案例

    2019独角兽企业重金招聘Python工程师标准>>> 上次是调通了"消息来自微信请求"一个请求验证接口.     今天下午,正式进军微信开发,完成了3个案例的d ...

最新文章

  1. 有时抄个1000词,有时自己发挥,新研究揭示GPT到底是怎么写作文的
  2. Android的事件分发
  3. Elasticsearch SQL
  4. FIREDAC用于LINUX报头文件FireDAC.VCLUI.Wait找不到
  5. 如何实现 MySQL 删除重复记录并且只保留一条
  6. 知识越分享,收获越多。
  7. 又一种页面之间传值方式
  8. 使用github找资源
  9. 【产品经验谈】详解Axure中的默认元件库
  10. 机器视觉运动控制一体机应用例程|芯片引脚缺陷检测系统
  11. No.1大数据入门 | 环境搭建:VM、CentOS7安装及网络配置
  12. css基础--border属性
  13. 大S《美容大王》内容80%都是没用的东西
  14. PHP是世界上最好语言吗?
  15. 另类方法申请google adsense账号
  16. js实现,点击侧边导航栏,可以平缓的跳到界面指定位置,同时当界面某个元素在浏览器可视范围的时候,相应的导航栏也显示相应的样式
  17. pytorch基础学习(四) 数据处理(一)
  18. 卸载 金山毒霸 的方法
  19. 热门的前端UI组件库
  20. Data Parallelism vs. Model Parallelism

热门文章

  1. jqueryui时间插件_jQueryUI菜单插件教程示例
  2. tf.train.Example的用法
  3. C# 浏览器控件 谷歌、火狐内核
  4. 总结几个 C 语言知识点
  5. Python写数据结构:二叉树的创建和遍历
  6. 这款游戏玩法是Low了点,但赚的却是实打实的EOS。
  7. 微积分8--相关变化率
  8. LVS+Redis部署手册
  9. 創業團隊基建工具選擇
  10. 计算从1970年到现在累计的秒数