[size=small][color=red]这个登录注册做了能有3天吧,遇到了几个问题,耽误了些时间。现在把问题记下来,防止以后忘掉。也希望对大家有所帮助吧。代码如下:[/color][/size]
[color=brown][size=large]struts.xml[/size][/color]
"http://struts.apache.org/dtds/struts-2.0.dtd">
/result.jsp
/result.jsp
[color=brown][size=large]web.xml[/size][/color]
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
[color=brown][size=large]login.jsp[/size][/color]
<%@ page language="java" contentType="text/html; charset=GB2312" pageEncoding="GB2312" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
My JSP 'index.jsp' starting page
[color=brown][size=large]result.jsp[/size][/color]
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
提交结果
${result}
[color=brown][size=large]LoginAction.java[/size][/color]
package com.struts.action;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
import com.struts.service.LoginService;
@SuppressWarnings("serial")
public class LoginAction extends ActionSupport implements ServletRequestAware {
// 用户名
private String userName;
// 用户密码
private String password;
// Service
private LoginService service = new LoginService();
// 获得HttpServletRequest对象
private javax.servlet.http.HttpServletRequest request;
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
/**
* 登录
* @return
*/
public String login() throws Exception {
// 登录用户check
boolean flg = service.userLogin(userName, password);
if (flg) {
request.setAttribute("result", "成功保存[" + "登录成功" + "]");
return "login";
}
request.setAttribute("result", "成功保存[" + "登录失败" + "]");
return "login";
}
/**
* 注册
* @return
*/
public String regist() throws Exception {
// 用户注册
boolean flg = service.userRegist(userName, password);
if (flg) {
request.setAttribute("result", "成功保存[" + "注册成功" + "]");
return "regist";
}
request.setAttribute("result", "成功保存[" + "注册失败" + "]");
return "regist";
}
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;
}
}
[color=brown][size=large]LoginService.java[/size][/color]
package com.struts.service;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class LoginService {
Connection con = null;
Statement stat = null;
ResultSet rs = null;
public LoginService() {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
stat = con.createStatement();
} catch (Exception e) {
con = null;
}
}
/**
* 登录用户check
*
* @param userName
* @param passWord
*/
public boolean userLogin(String userName, String passWord) {
String sql = "select * from tb_user where username='" + userName+"' and password ='"+passWord+"'";
try {
rs = executeQuery(sql);
if (rs.next()) {
return true;
}
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
/**
* 数据库查询
*
* @param userName
* @param passWord
*/
public ResultSet executeQuery(String sql) {
try {
rs = stat.executeQuery(sql);
} catch (Exception e) {
rs = null;
}
return rs;
}
public boolean userRegist(String userName, String passWord) {
String sql = "insert into tb_user(username,password) values('"+userName+"','"+passWord+"')";
try {
stat.executeUpdate(sql);
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
[size=medium][color=red]大致能跑的,就是跑数据库的时候有点问题,没那么多时间去研究了~
其实一直困扰的我的问题就是一个form里面有多个submit按钮时要怎么跳转到同一个action里面的不同的方法。
网上这种例子有很多,但大多数都实现不了。后来不经意看到一个论坛上一个帖子的一个神回复。于是试了一下果然成功了。
主要就是在struts.xml中加一句话,在上述代码中已经写出来了
就是这句话。
value必须是true,否则就不能动态的分配了。
就总结到这里了。希望大家相互指正,相互学习~[/color][/size]