剛學Java,聽朋友說有的公司有這樣一個面試題,爲了提高自己的能力,結合http://www.xin126.cn/show.asp?id=2504上的例子,開始動手寫出一個較爲完整的登陸,並會列出基本相關問題和解決辦法
做出這個小例子後,將嘗試繼續深入,做出一個類似噹噹網的網上購書系統
第一步、新建login.html,代碼如下:
<form method="post" action="login.do">
用戶名:
<input type="text" name="usuer">
密 碼:
<input type="password" name="password">
<input type="submit" value="提交">
</form>
第二步、新建了一個成功頁面,代碼如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" import="java.sql.*"%>
<html>
<head>
<title>成功跳轉</title>
</head>
<body>
<%
String message=new String ( request.getParameter("message").getBytes("ISO8859-1"),"GBK" ); %>
<%=message %>
</body>
</html>
第三步、新建一個myServlet包,並建立LoginValidate.java是一個Servlet,所以必須繼承HttpServlet:,代碼如下:
package myServlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginValidate extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name=request.getParameter("username");
String password=request.getParameter("password");
LoginDBO loginDBO=new LoginDBO();
String message =loginDBO.login(name, password);
String url="returnMessage.jsp?message="+message;
url=new String(url.getBytes("GBK"),"ISO8859_1");
response.sendRedirect(url);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
第四步、在myServlet包中新建一個LoginDBO.java。用來進行對數據庫的操作.代碼如下:
package myServlet;
import java.sql.*;
public class LoginDBO {
Connection conn;
Statement stmt;
public LoginDBO(){
try{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mvc_user","root","123");
stmt=conn.createStatement();
}catch(Exception e)
{
e.printStackTrace();
}
}
public String login(String name, String password){
String message="123";
try{
String sql1="select count(0) from user_info where user_name='"+name+"'";
ResultSet rs1=stmt.executeQuery(sql1);
if(rs1.next()){
int userCount=rs1.getInt(1);
if(0==userCount){
message="不存在該用戶";
return message;
}
String sql2="select count(0) from user_info where user_name='"+name+"'and password='"+password+"'";
ResultSet rs2=stmt.executeQuery(sql2);
if(rs2.next()){
int trueUserCount=rs2.getInt(1);
if(0==trueUserCount){
message="密碼錯誤";
return message;
}
message="成功!";
}
}
}catch(Exception e)
{
e.printStackTrace();
}
return message;
}
}