WEB登录验证和数据库连接的一个例子
第一步:先有HTML文件编写好登录页面:一个login.jsp文件代码如下:
- <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>My JSP 'login.jsp' starting page</title>
- </head>
- <body>
- <form name ="loginForm" method = "post" action="logintest1">
- <table>
- <tr>
- <td><div align="right">User Name:</div></td>
- <td><input type = "text" name = "username"></td></tr>
- <tr>
- <td><div align="right">Password:</div></td>
- <td><input type = "password" name = "password"></td></tr>
- <tr>
- <td></td>
- <td><input type = "Submit" name = "Submit" value="Submit"></td></tr>
- </table>
- </form>
- </body>
- </html>
第二步:设计Microsoft Access数据库login.mdb,添加表user,有user,password两列数据.设计后之后添加数据行,在WINDOWS提供的一个数据管理工具数据源(ODBC)中添加Access数据源.名为login.
第三步:设计数据处理类,LoginCheck.java,代码如下:
- package logincheck;
- import java.io.*;
- import java.sql.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- import com.sun.corba.se.pept.transport.Connection;
- public class LoginCheck extends HttpServlet
- {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException
- {
- // If it is a get request forward to doPost()
- doPost(request, response);
- }
- /* (non-Javadoc)
- * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
- */
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException
- {
- java.sql.Connection conn;
- String diver = "sun.jdbc.odbc.JdbcOdbcDriver";
- String url = "jdbc:odbc:login";
- // Get the username from the request
- String user = request.getParameter("username");
- // Get the password from the request
- String password = request.getParameter("password");
- response.setCharacterEncoding("GB2312");
- //String sqlstr = "select * from user where user ='"+user+ "' and password ='"+password+"'";
- String sqlstr = "select * from user where user =? and password =?";
- ResultSet result;
- PrintWriter out;
- try
- {
- try
- {
- Class.forName(diver);
- } catch (ClassNotFoundException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- conn = DriverManager.getConnection(url);
- PreparedStatement pstmt = conn.prepareStatement(sqlstr);
- //System.out.println(password);
- pstmt.setString(1, user);
- pstmt.setString(2, password);
- result = pstmt.executeQuery();
- response.setContentType("text/html;charset = GB2312");
- // write html page.
- out = response.getWriter();
- String title = "HelloServlet";
- String heading1 = "This is output from HelloServlet by doPost:";
- out.print("<HTML><HEAD><TITLE>" + title + "</TITLE>");
- out.print("</HEAD><BODY>");
- out.print(heading1);
- if (result.next())
- {
- out.print("<h1><p>" + user + ":您好,你已经成功登录!</h1>");
- }else
- {
- out.print("<h1><p>"+ user+ " 这个用户不存在或者密码错误!</上>");
- }
- out.print("</BODY></HTML>");
- out.close();
- } catch (SQLException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- public void destroy()
- {
- }
- }
最后,配置一下WEB.XML文件;添加如下
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<!-- logincheck connection -->
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>logincheck.LoginCheck</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/logintest1</url-pattern>
</servlet-mapping>
其中logincheck是LoginCheck.java所在的包,logintest1是登录页面的ACTION,login.jsp是启动页面.
启动Tomcat服务器,在浏览器中输入URL:http://localhost:8088/helloApp/login.jsp即可!!!