??
字號:
第7章 基于會員制的網絡交友
head.txt:
<table align="center" border="0" width="790" height="12" bgcolor=cyan cellspacing="0">
<tr>
<td width="100%">
<a href="<%=response.encodeURL("showMember.jsp")%>">瀏覽會員</a> |
<a href="<%=response.encodeURL("register.jsp")%>">會員注冊</a> |
<a href="<%=response.encodeURL("login.jsp")%>">會員登錄 </a> |
<a href="<%=response.encodeURL("find.jsp")%>">查找會員 </a> |
<a href="<%=response.encodeURL("message.jsp")%>">留言板</a>|
<a href="<%=response.encodeURL("publicMessage.jsp")%>">查看公共留言</a>|
<a href="<%=response.encodeURL("secretMessage.jsp")%>">查看私人留言</a>|
<a href="<%=response.encodeURL("modifyPassword.jsp")%>">修改密碼 </a> |
<a href="<%=response.encodeURL("modifyMessage.jsp")%>">修改個人信息 </a>|
</td>
</tr>
</table></table>
主頁面(效果如圖7.5所示)
welcomeFriend.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY bgcolor =yellow>
<%@ include file="head.txt" %>
<H1>
<CENTER> 歡迎網上結交朋友</CENTER>
</BODY>
</HTML>
注冊頁面使用的beans
Register.java:
package tom.jiafei;
import java.sql.*;
public class Register
{ String logname="",
password="",
sex="",age="",
email="",
phone="",
address="",
message="";
String backNews;//用來返回注冊是否成功。
Connection con;
Statement sql;
ResultSet rs;
public Register()
{ //加載橋接器:
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
}
//設置屬性值、獲取屬性值的方法:
public void setLogname(String name)
{ logname=name;
}
public String getLogname()
{return logname;
}
public void setAge(String n)
{ age=n;
}
public String getAge()
{return age;
}
public void setSex(String s)
{ sex=s;
}
public String getSex()
{return sex;
}
public void setPassword(String pw)
{ password=pw;
}
public String getPassword()
{return password;
}
public void setEmail(String em)
{ email=em;
}
public String getEmail()
{return email;
}
public void setPhone(String ph)
{ phone=ph;
}
public String getPhone()
{return phone;
}
public void setAddress(String ad)
{ address=ad;
}
public String getAddress()
{return address;
}
public String getMessage()
{return message;
}
public void setMessage(String m)
{ message=m;
}
public String getBackNews()
{return backNews;
}
public void setBackNews(String s)
{backNews=s;
}
//添加記錄到數據庫的member表:
public void addItem()
{try{
con=DriverManager.getConnection("jdbc:odbc:friend","","");
sql=con.createStatement();
if(phone.length()==0) //如果用戶沒有提供電話
{phone="無";
}
if(email.length()==0) //如果用戶沒有提供Email
{email="無";
}
if(address.length()==0) //如果用戶沒有提供地址
{address="無";
}
if(message.length()==0) //如果用戶沒有提供信息
{message="無";
}
String s=
"'"+logname+"'"+","+"'"+password+"'"+","+"'"+sex+"'"+","+
"'"+age+"'"+","+ "'"+phone+"'"+","+"'"+email+"'"+","+
"'"+address+"'"+","+"'"+message+"'";
String condition="INSERT INTO member VALUES"+"("+s+")";
sql.executeUpdate(condition);
backNews="注冊成功了";
con.close();
}
catch(SQLException e)
{//如果用戶使用member表中已經存在的名字,或使用了空字段值,就會發生SQL異常
backNews="你還沒有注冊,或該用戶已經存在,請你更換一個名字";
}
}
}
會員注冊頁面(效果如圖7.6所示)
register.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.Register" %>
<%! //處理字符串的方法:
public String codeString(String s)
{ String str=s;
try{byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
return str;
}
catch(Exception e)
{ return str;
}
}
%>
<HTML>
<BODY bgcolor=yellow><Font size=1>
<%@ include file="head.txt"%>
<Font size=1>
<BR>輸入您的信息,會員名字不允許含有空格,帶*號項必須填寫,:
<%String str=response.encodeURL("register.jsp");
%>
<FORM action="<%=str%>" Method="post">
<BR>會員名稱<Input type=text name="logname">*
設置密碼<Input type=password name="password">*
<BR>性別(*)<Input type=radio name="sex" checked="o" value="男">男
<Input type=radio name="sex" value="女">女
<BR>會員年齡<Input type=text name="age" value="0">*
電子郵件<Input type=text name="email">
<BR>聯系電話<Input type=text name="phone">.
通信地址<Input type=text name="address">
<BR>輸入您的簡介和交友要求
<BR><TextArea name="message" Rows="4" Cols="57">
</TextArea>
<BR><Input type=submit name="g" value="提交">
</Form>
<jsp:useBean id="memberlogin" class="tom.jiafei.Register" scope="request" >
</jsp:useBean>
<%
String logname="",sex="",age="", password="",
email="",phone="",address="" ,message="";
int n=0; //用來驗證年齡的變量。
//提交信息后,進行注冊操作:
if(!(session.isNew()))
{ logname=request.getParameter("logname");
if(logname==null)
{logname="";
}
logname=codeString(logname);
//判斷名字是否含有空格:
int space=logname.indexOf(" ");
if(space!=-1)
{response.sendRedirect("register.jsp");
}
password=request.getParameter("password");
if(password==null)
{password="";
}
password=codeString(password);
sex=request.getParameter("sex");
if(sex==null)
{sex="";
}
sex=codeString(sex);
age=request.getParameter("age");
if(age==null)
{age="0";
}
age=codeString(age);
try{ n=Integer.parseInt(age);
}
catch(NumberFormatException e)
{n=0;
}
email=request.getParameter("email");
if(email==null)
{email="";
}
email=codeString(email);
phone=request.getParameter("phone");
if(phone==null)
{phone="";
}
phone=codeString(phone);
address=request.getParameter("address");
if(address==null)
{address="";
}
address=codeString(address);
message=request.getParameter("message");
if(message==null)
{message="";
}
message=codeString(message);
}
%>
<% //檢查用戶是否按要求填寫了必要的信息:用戶名、年齡、密碼,
//為了以后處理漢字方便,我們采用了第1種方式初始化beans
boolean b=!(logname.equals(""))&&!(password.equals(""))&&(n<=150)&&(n>=0);
if(b)
{ out.print(logname);%>
<jsp:setProperty name="memberlogin" property="logname" value="<%=logname%>" />
<jsp:setProperty name="memberlogin" property="password" value="<%=password%>" />
<jsp:setProperty name="memberlogin" property="sex" value="<%=sex%>" />
<jsp:setProperty name="memberlogin" property="age" value="<%=age%>" />
<jsp:setProperty name="memberlogin" property="email" value="<%=email%>" />
<jsp:setProperty name="memberlogin" property="phone" value="<%=phone%>" />
<jsp:setProperty name="memberlogin" property="address" value="<%=address%>" />
<jsp:setProperty name="memberlogin" property="message" value="<%=message%>" />
<%
memberlogin.addItem();
}
else
{out.print("您還沒有填寫信息,或信息填寫不完整、年齡或名字不正確");
}
%>
<% //返回注冊是否成功的信息
if(!(session.isNew()))
{
%>
<jsp:getProperty name= "memberlogin" property="backNews" />
<%
}
%>
</Body>
</HTML>
登錄頁面使用的beans
Login.java:
package tom.jiafei;
import java.sql.*;
public class Login
{ String logname,
password,
success="false",
message=""; //用來返回登錄是否成功的消息。
Connection con;
Statement sql;
ResultSet rs;
public Login()
{ //加載橋接器:
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
}
//設置屬性值、獲取屬性值的方法:
public void setLogname(String name)
{ logname=name;
}
public String getLogname()
{return logname;
}
public void setPassword(String pw)
{ password=pw;
}
public String getPassword()
{return password;
}
public String getSuccess()
{return success;
}
//查詢數據庫的member表:
public String getMessage()
{try{
con=DriverManager.getConnection("jdbc:odbc:friend","","");
sql=con.createStatement();
String condition=
"SELECT * FROM member WHERE logname = "+"'"+logname+"'";
rs=sql.executeQuery(condition);
int rowcount=0;
String ps=null;
while(rs.next())
{ rowcount++;
logname=rs.getString("logname");
ps=rs.getString("password");
}
if((rowcount==1)&&(password.equals(ps)))
{ message="ok";
success="ok";
}
else
{message="輸入的用戶名或密碼不正確";
success="false";
}
con.close();
return message;
}
catch(SQLException e)
{ message="輸入的用戶名或密碼不正確";
success="false";
return message;
}
}
}
會員登錄頁面(效果如圖7.7所示)
login.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="tom.jiafei.Login" %>
<%! //處理字符串的方法:
public String codeString(String s)
{ String str=s;
try{byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
return str;
}
catch(Exception e)
{ return str;
}
}
%>
<HTML>
<BODY bgcolor=cyan ><Font size=1>
<%@ include file="head.txt" %>
<Font size=1>
<P>輸入用戶名和密碼:
<%String str=response.encodeURL("login.jsp");
%>
<FORM action="<%=str%>" Method="post">
<BR>登錄名稱<Input type=text name="logname">
<BR>輸入密碼<Input type=password name="password">
<BR><Input type=submit name="g" value="提交">
</Form>
<jsp:useBean id="login" class="tom.jiafei.Login" scope="session" >
</jsp:useBean>
<% //提交信息后,驗證信息是否正確:
String message="",
logname="",
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -