一.项目功能简介
功能流程图
源码:
百度网盘链接:https://pan.baidu.com/s/1QpbX1Sz0nZJwlvzEvx7zEw
提取码:ynzu
数据库:
链接:https://pan.baidu.com/s/1p2LIfcOeQ1EKdCDS4D29PA
提取码:mbpc
二.项目详解
1.创建javaweb项目
2.创建目录
src/com.neusoft.dao存放实体类和数据库操作的java文件
src/com.neusoft.servlet存放servlet的文件,用来接收前台发来的请求和数据,传到数据库,再返回给前台
webContent文件夹一般存放jsp、html、js等文件
web.xml存放在WEB-INF文件夹下
3.login.jsp(JSP页面用了Bootstrap http://www.bootcss.com/,联网状态加入下边标签,然后标签的class中引入Bootstrap中已有的class即可)
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
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>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body style="background:url('http://localhost:8080/webDomo2/login4.jpg') no-repeat;background-size: cover;">
<div style="width:30% ;height:376px;margin:136px 10px 10px 825px;border-radius:25px;box-shadow: 5px 5px 5px 5px #888888;background-color:">
<div style="height:70px;margin-left: 172px;margin-top:3px;float:left;">
<h1 style="font: bold em Brush Script MT ; color:#222; text-shadow: 0px 2px 3px #666;float:left;"> Login<h1/>
</div>
<form name="myform" method="post" action="LoginServlet" class="form-group"style="position:absolute;left:889px;top:216px;">
用户名: <input type="text" name="username" class="form-control" style="width:285px;"/><br/><br/>
密码:<input type="text" name="userpwd" class="form-control" style="width:285px;"/><br/><br/>
<input type="submit" class="btn btn-default" value="登录"/>
<a href="registerStudent.html">注册</a>
</form>
</div>
</body>
</html>
4.LoginServlet.java,接收login.jsp发来的请求,调用数据库文件StudentDAO.java中的doLogin()方法,查询数据返回回来后,根据查询结果跳转页面。
package com.neusoft.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.neusoft.dao.StudentDAO;
import com.neusoft.dao.StudentPO;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String username=request.getParameter("username");
String userpwd=request.getParameter("userpwd");
StudentDAO sd = new StudentDAO();
try {
StudentPO sp=sd.doLogin(username, userpwd);;
if(sp==null){
response.sendRedirect("/login.jsp");
}else{
request.setAttribute("student", sp);
if(sp.getUserPower()==1)
request.getRequestDispatcher("/main.jsp").forward(request, response);//request对象提供了一个getRequestDispatcher方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发。
else if(sp.getUserPower()==0)
request.getRequestDispatcher("/user.jsp").forward(request, response);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
5.StudentDAO.java 存放数据库操作的java文件,由servlet调用
package com.neusoft.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class StudentDAO {
//链接数据库
public Connection getConnection(){
// 数据库连接对象
Connection conn = null;
//JDBC驱动
String driverName="com.mysql.jdbc.Driver";
// 数据库连接地址
String connectionString="jdbc:mysql://localhost:3306/test?"+"user=root&password=123456&useUnicode=true&characterEncoding=utf-8";
try{
//加载驱动
Class.forName(driverName);
//通过DriverManager类的getConenction方法指定三个参数,连接数据库
conn=DriverManager.getConnection(connectionString);
//conn.close();
}catch(ClassNotFoundException e){
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
//用户登录
public StudentPO doLogin(String username,String userpwd) throws SQLException{
//定义SQL语句
String sql="select * from test where loginname=? and loginpwd=?";
//获取连接
Connection conn = getConnection();
PreparedStatement ps = null; //向数据库中发送数据集
ResultSet rs = null; //接受返回的数据集对象-结果集
StudentPO sp = null; //将传回的行封装为列对象
try {
ps=conn.prepareStatement(sql);// 创建一个Statement对象
ps.setString(1, username); //向sql语句的问号添加数据
ps.setString(2, userpwd);
//返回结果集
rs = ps.executeQuery();
/*用Connection接口的createStatement()方法获得Statement对象传递Sql语句
* 用它的ExecuteQuery()方法获取单个ResultSet对象.
* String Sql = "select * from login";
*stt = conn.createStatement();
*set = stt.executeQuery(Sql);
*/
//获取数据,遍历结果集,将数据封装到集合中
while(rs.next()){
sp = new StudentPO();
sp.setUserName(rs.getString("loginname"));/*********/
sp.setUserPwd(rs.getString("loginpwd"));
sp.setuserPower(rs.getInt("power"));
sp.setUserId(rs.getInt("id"));
sp.setRealName(rs.getString("name"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
rs.close();
ps.close();
conn.close();
}
return sp;
}
//按id查找
public StudentPO selectbyid(int id) throws SQLException{
//定义SQL语句
String sql="select * from test where id=?";
//获取连接
Connection conn = getConnection();
PreparedStatement ps = null; //向数据库中发送数据集
ResultSet rs = null; //接受返回的数据集对象-结果集
StudentPO sp = null; //将传回的行封装为列对象
try {
ps=conn.prepareStatement(sql);// 创建一个Statement对象
ps.setInt(1, id); //向sql语句的问号添加数据
//返回结果集
rs = ps.executeQuery();
/*用Connection接口的createStatement()方法获得Statement对象传递Sql语句
* 用它的ExecuteQuery()方法获取单个ResultSet对象.
* String Sql = "select * from login";
*stt = conn.createStatement();
*set = stt.executeQuery(Sql);