相信很多同学在初学 Struts 的时候 ,都有遇到过 使用 Struts 做一个注册+登陆 的功能,但是 部分同学,就像楼主一样,把这个项目分开来做 都没问题,可是一合起来就有点束手无册了。遇到的问题就是 :又不用数据库,如何把注册的名字和密码保存起来? 因为 登陆的时候要使用。
楼主在做这个项目的时候,第一时间就是去百度,可是强大的百度也搜不到 我的问题,于是楼主就只有自己去琢磨了。花了两三个小时终于写出来了。下面把代码贴出来,相信大家一看就会明白了。
这是注册界面 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>register</title>
<script type="text/javascript">
function register() {
var isRegister = true;
var name = document.getElementById("registernameid").value;
var pwd = document.getElementById("registerpwdid").value;
if (name == "" || pwd == "") {
isRegister = false;
alert("用户名或密码不能为空");
}
return isRegister;
}
</script>
</head>
<body>
<div align="center">
<form action="register" method="post" οnsubmit="return register()">
注册名:<input type="text" name="registername" id="registernameid"/><br> <br>
密 码: <input type="password" name="registerpwd" id="registerpwdid" /> <br><br>
<input type="submit" value="注册" />
</form>
</div>
</body>
</html>
这是登陆界面 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>login</title> </head> <body> 名:${username2 }<br> 密:${pwd2 }
<div align="center"> <h1>注册成功!请登录</h1> <form action="login" method="post"> 登录名:<input type="text" name="username" /><br> <br> 密码: <input type="password" name="password" /> <br><br> <input type="hidden" name="registername3" value="${username2 }"> <input type="hidden" name="registerpwd3" value="${pwd2 }"> <input type="submit" value="登陆" /> </form> </div> </body> </html>
这是RegisterAction.java
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class RegisterAction extends ActionSupport{
private String registername;
private String registerpwd;
public String getRegistername() {
return registername;
}
public void setRegistername(String registername) {
this.registername = registername;
}
public String getRegisterpwd() {
return registerpwd;
}
public void setRegisterpwd(String registerpwd) {
this.registerpwd = registerpwd;
}
@Override
public String execute() throws Exception {
System.out.println("名:"+registername);
System.out.println("密码:"+registerpwd);
ActionContext context=ActionContext.getContext();
context.put("username2", registername);
context.put("pwd2", registerpwd);
return SUCCESS;
}
}
这是LoginAction.java
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private String username;
private String password;
private String registername3;
private String registerpwd3;
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 getRegistername3() {
return registername3;
}
public void setRegistername3(String registername3) {
this.registername3 = registername3;
}
public String getRegisterpwd3() {
return registerpwd3;
}
public void setRegisterpwd3(String registerpwd3) {
this.registerpwd3 = registerpwd3;
}
@Override
public String execute() throws Exception {
System.out.println("username:"+username);
System.out.println("password:"+password);
System.out.println("registername3:"+registername3);
System.out.println("registerpwd3:"+registerpwd3);
if (username.equals(registername3)&&password.equals(registerpwd3)) {
return SUCCESS;
}else {
return ERROR;
}
}
}
struts.xml 这里的 class 是我的 包名和类名,对于大家应该不是问题
<?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="default" namespace="/" extends="struts-default">
<action name="register" class="com.lwy.RegisterAction">
<result name="success">/login.jsp</result>
</action>
<action name="login" class="com.lwy.LoginAction">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>register</display-name>
<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>
<welcome-file-list>
<welcome-file>register.jsp</welcome-file>
</welcome-file-list>
</web-app>
大家看明白了吗,其实关键就在:要把 RegisterAction.java 中的 姓名和密码 传到 login.jsp中,再 通过 一个 隐藏的(hidden) input 再次传到 LoginAction.java 中 ,然后剩下 error页面 和success 页面就没传上了。