一.在src中建包名称为cn.itcast.domain,并且在domain同级目录下建dao,service,util,web共5个包,并且在与src同级的web目录下建WEB-INF包将前端文件放在WEB-INF中,再建lib包将jar文件放进lib包中并且将lib包add as library
dao包:
impl–>UserDaoImpl
interface UserDao
service包:
impl–>UserServiceImpl
interface UserService
util包:
JBDCUtils
web包:
servlet包–>UserListServlet
domain包–>User
1. 在domain中编写一个类叫User,这个User就是一个JavaBean对应着我们数据库中User表的实体类,并且数据库的表User中有哪些字段就有哪些成员变量
package cn.itcast.domain;
public class User {
private int id;
private String name;
private String gender;
private int age;
private String address;
private String qq;
private String email;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
", address='" + address + '\'' +
", qq='" + qq + '\'' +
", email='" + email + '\'' +
'}';
}
}
这是数据库数据
CREATE DATABASE day17; -- 创建数据库
USE day17; -- 使用数据库
CREATE TABLE USER( -- 创建表
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL,
gender VARCHAR(5),
age INT,
address VARCHAR(32),
qq VARCHAR(20),
email VARCHAR(50)
);
2.将web目录下的静态页面改造成jsp页面也就是在顶部添加<%@ page contentType="text/html;charset=UTF-8" language="java" %>
在这个静态页面中有个a标签href应该使用el表达式改写成"${pageContext.request.contextPath}/userListServlet" 使其跳转到src/web/servlet/userListServlet中的Servlet。
- 第一步调用UserService完成查询,但是现在还没有这个Service,所以现在把service和dao写完。
- 先在service中写一个接口,这个接口叫做UserService
package cn.itcast.service;
import cn.itcast.domain.User;
import java.util.List;
/*
*用户管理的业务接口
* */
public interface UserService {
/**
* 查询所有用户信息
* @return
*/
public List<User> findAll();
}
- 完成UserService后在service包下定义一个子包impl,在这个子包里面定义接口实现类UserServiceImpl
package cn.itcast.service.impl;
import cn.itcast.dao.UserDao;
import cn.itcast.domain.User;
import cn.itcast.service.UserService;
import java.util.List;
public class UserServiceImpl implements UserService {
@Override
public List<User> findAll() {
//调用Dao完成查询
return null;
}
}
- 而在UserServiceImpl实现类中要做的第一件事是调用Dao完成查询,所以在dao包建一个接口UserDao
package cn.itcast.dao;
import cn.itcast.domain.User;
import java.util.List;
/*
* 用户操作的DAO
* */
public interface UserDao {
public List<User> findAll();
}
- 再在dao中建一个子包impl,并且在子包中建类UserDaoImpl实现类用来实现UserDao接口,
package cn.itcast.dao.impl;
import cn.itcast.dao.UserDao;
import cn.itcast.domain.User;
import cn.itcast.util.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
public class UserDaoImpl implements UserDao {
@Override
public List<User> findAll() {
//使用JDBC操作数据库
return null;
}
}
- 而在UserDaoImpl中
public List<User> findAll()
方法里面使用JDBC操作数据库,但是我们先不做这个动作,我们可以先在UserServiceImpl中创建一个private UserDao dao = new UserDaoImpl();
这样我们就可以直接用dao.findAll()
package cn.itcast.service.impl;
import cn.itcast.dao.UserDao;
import cn.itcast.dao.impl.UserDaoImpl;
import cn.itcast.domain.User;
import cn.itcast.service.UserService;
import java.util.List;
public class UserServiceImpl implements UserService {
private UserDao dao = new UserDaoImpl();
@Override
public List<User> findAll() {
//调用Dao完成查询
return dao.findAll();
}
}
- 直接给它查询所有数据并且在service里面返回给我们对应的servlet,那么有了servlet之后我们就可以在servlet中完成逻辑,这个逻辑就是创建service.
package cn.itcast.web.servlet;
import cn.itcast.domain.User;
import cn.itcast.service.UserService;
import cn.itcast.service.impl.UserServiceImpl;
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;
import java.util.List;
@WebServlet("/userListServlet")
public class UserListServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.调用UserService完成查询
UserService service = new UserServiceImpl();
List<User> users = service.findAll();
//2.将list存入request域
request.setAttribute("users",users);
//3.转发到list.jsp
request.getRequestDispatcher("/list.jsp").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
- service的代码也写完了,现在剩下的就是dao的实现类,dao的实现类中需要使用JDBC操作数据库,我们使用的是spring提供的JDBCTemplete
- UserDaoImpl的实现方法,首先我们把druid.properties复制到src下配置参数,我们把工具类复制进util包也就是和JDBCUtils.java,之后我们开始在实现类中写代码
package cn.itcast.dao.impl;
import cn.itcast.dao.UserDao;
import cn.itcast.domain.User;
import cn.itcast.util.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
public class UserDaoImpl implements UserDao {
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
@Override
public List<User> findAll() {
//使用JDBC操作数据库
//1.定义sql
String sql = "select * from user";
List<User> users = template.query(sql, new BeanPropertyRowMapper<User>(User.class));
return users;
}
}
- 将静态网页全部转换成jsp,并且在web/list.jsp中引入jsp的标签库,把tr/td指令全部删了,只保留一个,最后使用forEach标签进行循环,并且改写td内容为el表达式的形式。最后在数据库中添加记录。
链接:https://pan.baidu.com/s/1jHmT5ptY4CxNXh4xPxXhaw
提取码:wyh1