Jsp+Servlet+JavaBean是MVC思想,Jsp=V(视图) Servlet=C(控制器) JavaBean=M(模型)
一.创建一个注册页面和登陆页面(V层)
<html>
<head>
<title>注册</title>
</head>
<body>
<h3>小可爱请注册</h3>
<form action="/registerServlet" name="register" method="post">
<br><input name="username" type="text" placeholder="请设置账户">
<br><input name="password" type="password" placeholder="请设置密码">
<br><input type="submit" value="注册">
</form>
</body>
</html>
<html>
<head>
<title>登陆</title>
</head>
<body>
<h3>小可爱请登陆</h3>
<form action="/loginServlet" name="register" method="post">
<br><input name="username" type="text" placeholder="请输入账号">
<br><input name="password" type="password" placeholder="请输入密码">
<br><input type="submit" value="登陆" ">
</form>
</body>
</html>
二.创建JavaBean层实现对数据的查询与插入(M层)
创建Dao层用户实体类
package com.JavaBean;
/**
*
* @author: Doomed
* @date: 2019/1/15
* @place: usth
*
*/
public class User {
private String name;
private String password;
//封装用户信息 -- JavaBean层
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
}
创建Dao层公共工具类
package com.JavaBean;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DB_Dao {
static final String url = "jdbc:mysql://localhost/..";
static final String user = "root";
static final String pass = "root";
static final String driver = "com.mysql.jdbc.Driver";
Connection conn = null;
//Dao
public Connection getCon() throws ClassNotFoundException, SQLException {
//注册驱动
Class.forName(driver);
//连接驱动
conn = DriverManager.getConnection(url, user, pass);
return conn;
}
//关闭资源,避免出现异常
public static void close(Connection con, PreparedStatement ps , ResultSet rs)
{
if(rs != null)
{
try
{
rs.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
if(ps != null)
{
try {
ps.close();
}catch(SQLException e)
{
e.printStackTrace();
}
}
if(con != null)
{
try {
con.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
}
创建Dao层实现类
package com.JavaBean;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*
* @author: Doomed
* @date: 2019/1/15
* @place: usth
*
*/
public class UserDaoImpl implements UserDao{
Connection conn = null;
PreparedStatement ps = null;
PreparedStatement ps1 = null;
ResultSet rs = null;
public boolean setUser(User user) {
DB_Dao dao = new DB_Dao();
try {
conn = dao.getCon();
//判断传送过来的username数据库中是否已经存在,如果存在则返回false
String sql1 = "select count(1) from userinfo where username = ?";
ps1 = conn.prepareStatement(sql1);
ps1.setString(1,user.getName());
rs = ps1.executeQuery();
while(rs.next())
{
if(rs.getInt(1)>0)
{
//close(conn,ps,rs);
return false;
}
}
//如果没被注册,执行插入语句
String sql = "insert into userinfo(username,password) values(?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1,user.getName());
ps.setString(2,user.getPassword());
//执行更新
ps.executeUpdate();
//close(conn,ps,rs);
return true;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//判断账号是否已被注册
return false;
}
//=====登陆校验=====
public User getUser(User user)
{
DB_Dao dao = new DB_Dao();
try {
conn = dao.getCon();
String sql = "select * from userinfo where username = ? and password = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, user.getName());
ps.setString(2, user.getPassword());
//执行全部查询
rs = ps.executeQuery();
User users = null;
if(rs.next())
{
users = new User();
users.setName(rs.getString("username"));
users.setPassword(rs.getString("password"));
//close(conn,ps,rs);
return user;
}
else
{
//close(conn,ps,rs);
return null;
}
}
catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return user;
}
}
创建Dao层接口类
package com.JavaBean;
// JDBC -- JavaBean层
public interface UserDao{
//用户登录方法的声明
public User getUser(User user);
//用户注册方法的声明
public boolean setUser(User user);
}
三.创建servlet层进行登陆的业务逻辑处理(C层)
创建loginServlet类处理登陆业务
package com.Servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.JavaBean.*;
/**
*
* @author: Doomed
* @date: 2019/1/15
* @place: usth
*
*/
public class loginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public loginServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//接收从jsp表单传过来的数据
String name = request.getParameter("username");
String password = request.getParameter("password");
//判断表单数据是否传送过来
System.out.println(name +" "+password );
//获取login.jsp页面提交的账号和密码设置到实体类User中
User user=new User();
user.setName(name);
user.setPassword(password);
UserDao dao = new UserDaoImpl();
User us = dao.getUser(user);
if(us != null)
{
request.getSession(true).setAttribute("usename", name);
response.sendRedirect("/loginSucceed.html");
}
else
{
response.sendRedirect("/loginFail.html");
}
}
}
创建registerServlet类处理注册业务
package com.Servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.JavaBean.*;
/**
*
* @author: Doomed
* @date: 2019/1/15
* @place: usth
*
*/
public class registerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public registerServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//接收从jsp表单传过来的数据
String name = request.getParameter("username");
String password = request.getParameter("password");
//判断表单数据是否传送过来
System.out.println(name +" "+password );
//获取registerServlet.jsp页面提交的账号和密码设置到实体类User中
User user=new User();
user.setName(name);
user.setPassword(password);
UserDao dao = new UserDaoImpl();
boolean flag = dao.setUser(user);
if(flag == true)
{
response.sendRedirect("/registerSucceed.html");
}
else
{
response.sendRedirect("/registerFail.html");
}
}
}
配置.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>blogs</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>com.Servlet.loginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>registerServlet</servlet-name>
<servlet-class>com.Servlet.registerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>registerServlet</servlet-name>
<url-pattern>/registerServlet</url-pattern>
</servlet-mapping>
</web-app>
效果图