java struts2入门学习实例--用户注册和用户登录整合
需求:
1、用户注册(user_register.jsp)--》注册成功(UserRegister.action)--》显示注册信息(register_success.jsp)
2、用户登录(user_login.jsp)--》登录成功(UserLogin.action)--》显示用户名(login_success.jsp)
分析:
这里主要涉及struts2中对于多个类似的业务操作方法的封装。
效果:
针对需求1,用户注册:


针对需求2,用户登录:


实现:
user_register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form name="register" action="/struts2/UserRegister" method="post">
<table border="2" align="center">
<caption>新用户注册</caption>
<tr>
<th>用户名:</th>
<td><input name="username" id="username" type="text" /></td>
</tr>
<tr>
<th>密码:</th>
<td><input name="password" id="password" type="password" /></td>
</tr> <tr>
<td colspan="2" align="center"><input type="submit" value="提交"
width="120ppx" /></td>
</tr> </table>
</form>
</body>
</html>
user_login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form name="register" action="/struts2/UserLogin" method="post">
<table border="2" align="center">
<caption>用户登录</caption>
<tr>
<th>用户名:</th>
<td><input name="username" id="username" type="text" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="提交"
width="120ppx" /></td>
</tr> </table>
</form>
</body>
</html>
UserAction.java
package com.amos.web.action; import com.opensymphony.xwork2.ActionSupport; /**
* @ClassName: UserAction
* @Description: 用户管理,将相关的action封装到一个类中
* @author: amosli
* @email:amosli@infomorrow.com
* @date Jan 8, 2014 1:06:00 AM
*/
public class UserAction extends ActionSupport {
private static final long serialVersionUID = -6275534406709255984L;
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 register() throws Exception { return "toRegisterJsp";
} // 用户登录
public String login() throws Exception {
return "toLoginJsp";
} }
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>
<!-- 加载其他配置文件 -->
<include file="config/user_struts.xml"></include>
</struts>
user_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>
<package name="user" namespace="/" extends="struts-default">
<action name="UserRegister" class="com.amos.web.action.UserAction"
method="register">
<result name="toRegisterJsp" type="dispatcher">
/register_success.jsp
</result>
</action>
<action name="UserLogin" class="com.amos.web.action.UserAction"
method="login">
<result name="toLoginJsp" type="dispatcher">
/login_success.jsp
</result>
</action>
</package>
</struts>
login_success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
登录成功!
<hr>
用户名:<s:property value="username"/>
</body>
</html>
register_success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
注册成功<br/>
<hr>
用户名:<s:property value="username" />
密码:<s:property value="password"/>
</body>
</html>
代码分析:
代码的入口为两个jsp程序,user_register.jsp和user_login.jsp,因为原理大体相同,这里主要讲一下登录,注册上一篇文章已经讲过了。
首先,在地址栏里输入http://localhost:8080/struts2/user_login.jsp,表单的action动作为POST方式提交,对应的动作时是UserLogin.action;UserLogin在struts启动时struts.xml加载到内存中时已经将user_struts.xml 反射出来了。user_struts.xml中已经配置了,调用com.amos.web.action.UserAction中的login方法,然后将值再转发到login_success.jsp中,login_success.jsp,通过s标签进行取值并最终显示到浏览器中。
这里最主要的思想在于将登录和注册这两种相类似的业务,相关联的业务整合到一个action中。
用
户注册(user_register.jsp)--》注册成功(UserRegister.action)--》显示注册信息(register_success.jsp)
用户登录(user_login.jsp)--》登录成功(UserLogin.action)--》显示用户名(login_success.jsp)
java struts2入门学习实例--用户注册和用户登录整合的更多相关文章
- java struts2入门学习实例--使用struts进行验证
一.为什么要进行验证? 验证几乎是注册登录的必须前提,验证的主要作用有两点: 1.安全性 2.对用户提供差异化服务. 二.如何验证? ActionSupport类中有一个validate()方法,这是 ...
- java struts2入门学习实例--将客户端IP地址和访问方式输出到浏览器
实例1:实现客户端IP地址和访问方式输出到浏览器. IpAction.java package com.amos.web.action; import javax.servlet.http.HttpS ...
- java struts2入门学习实例--用户注册
一.用户注册示例 register.jsp <%@ page language="java" contentType="text/html; charset=UT ...
- java struts2入门学习实例--使用struts2快速实现多个文件上传
一.错误提示信息配置 昨天说到更改默认错误配置信息,我测试很多遍,一直都不对.下面贴出来,待以后有好方法了再补充吧. 首先新建一个properties文件,这里命名为testupload.proper ...
- java struts2入门学习实例--使用struts2快速实现上传
一.文件上传快速入门 1).关于上传表单三要素 >>尽量以POST请求方式上传,因为GET支持文件大小是有限制的. >>必须要加上enctype="multipart ...
- java struts2入门学习---中文验证、对错误消息的分离、结果(result)类型细节配置
一.需求 利用struts2实现中文验证并对错误消息的抽离. 详细需求:用户登录-->不填写用户名-->页面跳转到用户登录页面,提示用户名必填(以英文和中文两种方式提示)-->填写英 ...
- java struts2入门学习---国际化
一.国际化的概念 1.不同国家的人访问同一个网站,显示的语言不同. 2.对JSP页面进行国际化 属性(properties)文件命名规则:基名---语言--国家如, message_zh_CN.pro ...
- java struts2入门学习---拦截器学习
一.拦截器,拦截器栈 1.拦截器的作用 拦截器本质上和servlet的过滤器是一样的.在struts2中,拦截器能够对Action前后进行拦截,拦截器是一个可插拨的,你可以选择使用拦截器,也可以卸载拦 ...
- java struts2入门学习--OGNL语言常用符号和常用标签学习
一.OGNL常用符号(接上一篇文章): 1.#号 1)<s:property value="#request.username"/> 作用于struts2的域对象,而不 ...
随机推荐
- mybatis xml mapper 文件中 if-else 写法
mybaits 中没有else要用chose when otherwise 代替 范例一 <!--批量插入用户--> <insert id="insertBusinessU ...
- 用css3和jQuery制作精美的表单
用css3和jQuery制作一个简单的精美表单 html代码如下: <span class="title">Mask Your Input Forms and Make ...
- 强化Linux安全的10个技能
1.找出不必要的服务 很明显,服务器上跑的服务,并不是每个都有用的.强烈建议检查并关掉不需要的服务,从而减少风险(多跑一个服务,就可能多几个漏洞). 查询运行在runlevel 3的服务列表: [af ...
- java之类的初始化
概述 在java中,一个类能够包括的元素有变量,方法,代码块.这当中变量能够分为普通变量和静态变量,代码块也有静态代码块和普通代码块.在创建一个对象的时候,这个对象是怎么初始化的呢.这里我们就開始来解 ...
- Python在VSCode中进入交互界面调试
VSCode非常强大,断点好用,美中不足,每次只能通过下面窄窄一行进行各种检查,而python的优点就在于交互式的调试,所以希望能够在断点时能够进入到正常的交互界面进行调试. 我用的插件是: 设置交互 ...
- [Algorithm] Check for balanced parentheses using stack
Algorithm or program to check for balanced parentheses in an expression using stack data structure. ...
- ERROR: In <declare-styleable> MenuView, unable to find attribute android:preserveIconSpacing
eclipse sdk从低版本号切换到高版本号sdk的时候 v7包会包这个错ERROR: In <declare-styleable> MenuView, unable to fin ...
- Linux环境下网络编程杂谈《转》
今天我们说说“Pre-网络编程”.内容比较杂,但都是在做网络应用程序开发过程中经常要遇到的问题. 一.大端.小端和网络字节序 小端字节序:little-endian,将低字节存放在内存的起始地址: 大 ...
- 【树形DP】 HDU 2412 Party at Hali-Bula
给出根节点(BOSS) 然后还有N-1个边 A B 由B指向A (B为A 的上司) 每次仅仅能选择这个关系中的当中一个 求最多选几个点 而且输出是不是唯一的 重点推断是否唯一: 1.若下属不去和去都 ...
- 《python源代码剖析》笔记 python中的List对象
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.PyListObject对象 --> 变长可变对象,可看作vector<Py ...