JavaWeb中常说的三层结构指的是web层、server层和DAO层。
web层的主要作用:面向用户,将从浏览器获取数据传递给server层或者从server层接收数据传递给浏览器。
server层的主要作用:是进行业务逻辑判断。
DAO层的主要作用:接收server层的数据,对数据库做增删改查等操作,并将结果返还给server层。
------登陆案例------
案例分析
准备数据
-
jar包准备
点击下载jar包 -
网页准备
登陆页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>登录页面</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/login.css" rel="stylesheet">
<script src="js/jquery.js"></script>
<script src="js/bootstrap.js"></script>
</head>
<body>
<div class="container text-center">
<form class="form-signin" action="http://localhost:8080/loginServlet">
<h2 class="form-signin-heading">登录页面</h2>
<input type="text" name="username" class="form-control" placeholder="用户名" required autofocus>
<input type="password" name="password" class="form-control" placeholder="密码" required>
<button class="btn btn-lg btn-primary btn-block" type="submit">登录</button>
</form>
</div>
</body>
</html>
登陆成功
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>欢迎登陆!</h1>
</body>
</html>
登录失败
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>用户名或密码错误,请重新登录!</h1>
</body>
</html>
3.工具类准备
public class JdbcTemplateUtil {
private static ComboPooledDataSource dataSource = null;
private static JdbcTemplate jdbcTemplate = null;
static {
dataSource = new ComboPooledDataSource();
}
/**
* 获取jdbcTemplate
* @return
*/
public static JdbcTemplate getJdbcTemplate(){
jdbcTemplate = new JdbcTemplate(dataSource);
return jdbcTemplate;
}
}
- xml配置文件
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/login</property>
<property name="user">root</property>
<property name="password">123456</property>
</default-config>
</c3p0-config>
5.数据库准备
数据库名:login
表名:user
代码实现
结构图
web层
package cn.cosco.web;
import cn.cosco.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @Author: ZhangYing
* @Date: 2018/10/9 9:05
*/
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//修正乱码问题
request.setCharacterEncoding("utf-8");
//获取页面数据
String username = request.getParameter("username");
String password = request.getParameter("password");
//对数据进行业务逻辑判断
UserService userService = new UserService();
Boolean result = userService.login(username,password);
//对结果判断
if(result){
//登陆成功
request.getRequestDispatcher("/success.html").forward(request,response);
}else{
//登陆失败
request.getRequestDispatcher("/error.html").forward(request,response);
}
}
}
service层
package cn.cosco.service;
import cn.cosco.dao.UserDao;
import cn.cosco.domain.User;
import java.util.List;
/**
* @Author: ZhangYing
* @Date: 2018/10/9 9:17
*/
public class UserService {
public Boolean login(String username, String password) {
UserDao userDao = new UserDao();
List<User> userList = userDao.login(username,password);
if(userList == null || userList.size() == 0){
return false;
}else{
return true;
}
}
}
Dao层
package cn.cosco.dao;
import cn.cosco.domain.User;
import cn.cosco.utils.JdbcTemplateUtil;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
/**
* @Author: ZhangYing
* @Date: 2018/10/9 9:20
*/
public class UserDao {
public List<User> login(String username, String password) {
JdbcTemplate jdbcTemplate = JdbcTemplateUtil.getJdbcTemplate();
String sql = "SELECT * FROM user WHERE username = ? and password = ?";
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class), username, password);
}
}
domain层
package cn.cosco.domain;
/**
* @Author: ZhangYing
* @Date: 2018/10/9 8:59
*/
public class User {
private int id;
private String username;
private String assword;
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", assword='" + assword + '\'' +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getAssword() {
return assword;
}
public void setAssword(String assword) {
this.assword = assword;
}
}