这本书大概看过了,把里面题目大概做了一遍,可能自己比较功利,没有细细地把每个习题做到完美,但基本的功能都能实现。
题目:在数据库中建立表格t_customer(account,password,cname),插入一些记录,编写注册页面,输入账号、密码、确认密码、姓名,完成注册的功能,并能够判断是否重复注册。提交后页面不刷新。
第一个页面sign,用来提交。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript">
function login(){
var account=document.loginForm.account.value;
var password=document.loginForm.password.value;
var pw=document.loginForm.pw.value;
var name=document.loginForm.name.value;
if(password!=pw){
//location.reload();
//history.go(0);
//location.replace(location)
alert("对不起,您2次输入的密码不一致");
}
else{
var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
var url="http://localhost:8080/JspLearning/LoginServlet?account="+account+"&password="+password+"&name="+name;
xmlHttp.open("post",url,true);
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
resultDiv.innerHTML=xmlHttp.responseText;
}
else{
resultDiv.innerHTML+="正在验证,请稍候。。。";
}
}
xmlHttp.send();
}
}
</script>
注册页面<br>
<form name="loginForm">
输入账号:<input type="text" name="account"><br>
输入密码:<input type="password" name="password"><br>
再输入一次密码:<input type="password" name="pw"><br>
输入名字:<input type="text" name="name"><br>
<input type="button" value="注册" onclick="login()">
</form>
<div id="password">
</div>
<div id="resultDiv">
</div>
</body>
</html>
第二个页面,LoginServlet.java用于逻辑控制,就是个普通的java类,只不过按照jsp的底层逻辑来写的,所以叫servlet。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript">
function login(){
var account=document.loginForm.account.value;
var password=document.loginForm.password.value;
var pw=document.loginForm.pw.value;
var name=document.loginForm.name.value;
if(password!=pw){
//location.reload();
//history.go(0);
//location.replace(location)
alert("对不起,您2次输入的密码不一致");
}
else{
var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
var url="http://localhost:8080/JspLearning/LoginServlet?account="+account+"&password="+password+"&name="+name;
xmlHttp.open("post",url,true);
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
resultDiv.innerHTML=xmlHttp.responseText;
}
else{
resultDiv.innerHTML+="正在验证,请稍候。。。";
}
}
xmlHttp.send();
}
}
</script>
注册页面<br>
<form name="loginForm">
输入账号:<input type="text" name="account"><br>
输入密码:<input type="password" name="password"><br>
再输入一次密码:<input type="password" name="pw"><br>
输入名字:<input type="text" name="name"><br>
<input type="button" value="注册" onclick="login()">
</form>
<div id="password">
</div>
<div id="resultDiv">
</div>
</body>
</html>
第三个页面,queryDao,也是一个普通的java类,不过专门用于数据库处理,所以叫Dao。
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
public class queryDao {
public static String query(String name,String account,String password) throws Exception{
Connection conn=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/web003","root","123456");
String sql="select ACCOUNT,PASSWORD,CNAME from t_customer";
Statement stat=conn.createStatement();
ResultSet rs=stat.executeQuery(sql);
while(rs.next()) {
String name2=rs.getString("CNAME");
String account2=rs.getString("ACCOUNT");
String password2=rs.getString("PASSWORD");
System.out.print(name2);
System.out.print(name);
if(name2.equals(name)) {
return "0";
}
}
String sql2="INSERT INTO T_CUSTOMER(ACCOUNT,PASSWORD,CNAME) VALUES ('"+account+"','"+password+"','"+name+"')";
stat.executeUpdate(sql2);
rs.close();
stat.close();return "1";
}catch(SQLException e) {
e.printStackTrace();
}finally {
try {
if(conn!=null) {
conn.close();
conn=null;
}
}catch(Exception ex) {
}
}
return "2";
}
}
其余两个页面用于显示,毫无技术含量。
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
public class queryDao {
public static String query(String name,String account,String password) throws Exception{
Connection conn=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/web003","root","123456");
String sql="select ACCOUNT,PASSWORD,CNAME from t_customer";
Statement stat=conn.createStatement();
ResultSet rs=stat.executeQuery(sql);
while(rs.next()) {
String name2=rs.getString("CNAME");
String account2=rs.getString("ACCOUNT");
String password2=rs.getString("PASSWORD");
System.out.print(name2);
System.out.print(name);
if(name2.equals(name)) {
return "0";
}
}
String sql2="INSERT INTO T_CUSTOMER(ACCOUNT,PASSWORD,CNAME) VALUES ('"+account+"','"+password+"','"+name+"')";
stat.executeUpdate(sql2);
rs.close();
stat.close();return "1";
}catch(SQLException e) {
e.printStackTrace();
}finally {
try {
if(conn!=null) {
conn.close();
conn=null;
}
}catch(Exception ex) {
}
}
return "2";
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
嘿,你成功了。<br>
</body>
</html>
这个题不难,就两点:1、因为mysql里面的字段类型我设的text,所以在queryDao里面的插入语句里面值要加’’,不然会报错。2、js的语法接触较少,我原来写的一个(!a==b),一直判断不了,改成(a!=b)就可以了,一定要注意javascript和java的语法差距很大。
下一本书看(