Struts2学习日记(二)简单的Struts2登陆实现(Action继承ActionSupport类)
功能实现:实现登陆功能,输入用户名和密码,如果用户名不为hello或者密码不为world,便返回登陆页并提示错误,否则显示登陆结果。
1.打开MyEclipse,创建一个webProject项目。
2.导入包。
3.打开WebRoot\WEB-INF\web.xml,添加过滤器。
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登陆页面。
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”。
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
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目录下文件)。
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类)相关推荐
- Struts2学习总结二
Struts2框架学习 Struts2学习总结二 1.请求封装参数 1.1.动作类作为实体模型 1.1.1.创建UserAction类 1.1.2.创建struts.xml并编写 1.1.3.编写we ...
- OGRE+CG学习日记[1]-简单的3D程序
OGRE+CG学习日记[1]-简单的3D程序 终于有时间开始研究OGRE和CG这些3D技术方面的东西了 先对今天的成果进行一下简单介绍 创建一个OGRE窗口,在里面放入一个怪兽头模型 写一个输 ...
- Struts2实现Preparable接口和【struts2】继承ActionSupport类
Struts2实现Preparable接口 实现preparable接口,实现public void prepare() throws Exception 方法.当你访问某问action指定方法之前, ...
- 《游戏人工智能编程》学习笔记二——简单的有限状态机
1.有限状态机的定义 定义:一个有限状态机是一个设备,或是一个设备模型,具有有限数量的状态,它可以在任何给定的时间根据输入进行操作,使得从一个状态变换到另一个状态,或者是促使一个输出或者一种行为的发生 ...
- Python学习日记(二十五) 接口类、抽象类、多态
接口类 继承有两种用途:继承基类的方法,并且做出自己的改变或扩展(代码重用)和声明某个子类兼容于某基类,定义一个接口类interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子 ...
- C++学习日记3——友元、运算重载符、继承、多态
目录 一.友元 1.1 通俗解释 1.2 编程解释 1.3 友元的关键字 1.4 友元的三种实现 1.4.1 全局函数做友元 1.4.2 类做友元 1.4.3 成员函数做友元 二.运算重载符 2.1 ...
- struts2学习笔记二--准备struts2的学习和开发环境
准备struts2的学习和开发环境 1 导包 2 参照开发包自带的例子在web.xml文件中配置 3 参照开发包自带的例子编写Action类和配置struts.xml文件 <struts> ...
- Python学习日记(二十八) hashlib模块、configparse模块、logging模块
hashlib模块 主要提供字符加密算法功能,如md5.sha1.sha224.sha512.sha384等,这里的加密算法称为摘要算法.什么是摘要算法?它又称为哈希算法.散列算法,它通过一个函数把任 ...
- 微信开发学习日记(二):3个案例
2019独角兽企业重金招聘Python工程师标准>>> 上次是调通了"消息来自微信请求"一个请求验证接口. 今天下午,正式进军微信开发,完成了3个案例的d ...
最新文章
- 有时抄个1000词,有时自己发挥,新研究揭示GPT到底是怎么写作文的
- Android的事件分发
- Elasticsearch SQL
- FIREDAC用于LINUX报头文件FireDAC.VCLUI.Wait找不到
- 如何实现 MySQL 删除重复记录并且只保留一条
- 知识越分享,收获越多。
- 又一种页面之间传值方式
- 使用github找资源
- 【产品经验谈】详解Axure中的默认元件库
- 机器视觉运动控制一体机应用例程|芯片引脚缺陷检测系统
- No.1大数据入门 | 环境搭建:VM、CentOS7安装及网络配置
- css基础--border属性
- 大S《美容大王》内容80%都是没用的东西
- PHP是世界上最好语言吗?
- 另类方法申请google adsense账号
- js实现,点击侧边导航栏,可以平缓的跳到界面指定位置,同时当界面某个元素在浏览器可视范围的时候,相应的导航栏也显示相应的样式
- pytorch基础学习(四) 数据处理(一)
- 卸载 金山毒霸 的方法
- 热门的前端UI组件库
- Data Parallelism vs. Model Parallelism