zoukankan      html  css  js  c++  java
  • 69期-Java SE-055_综合练习

    webdemo.sql

    -- MySQL dump 10.13  Distrib 8.0.11, for macos10.13 (x86_64)
    --
    -- Host: 127.0.0.1    Database: webdemo
    -- ------------------------------------------------------
    -- Server version    8.0.11
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
     SET NAMES utf8mb4 ;
    /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
    /*!40103 SET TIME_ZONE='+00:00' */;
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
    
    --
    -- Table structure for table `classes`
    --
    
    DROP TABLE IF EXISTS `classes`;
    /*!40101 SET @saved_cs_client     = @@character_set_client */;
     SET character_set_client = utf8mb4 ;
    CREATE TABLE `classes` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
    /*!40101 SET character_set_client = @saved_cs_client */;
    
    --
    -- Dumping data for table `classes`
    --
    
    LOCK TABLES `classes` WRITE;
    /*!40000 ALTER TABLE `classes` DISABLE KEYS */;
    INSERT INTO `classes` VALUES (1,'一班'),(2,'二班'),(3,'三班');
    /*!40000 ALTER TABLE `classes` ENABLE KEYS */;
    UNLOCK TABLES;
    
    --
    -- Table structure for table `student`
    --
    
    DROP TABLE IF EXISTS `student`;
    /*!40101 SET @saved_cs_client     = @@character_set_client */;
     SET character_set_client = utf8mb4 ;
    CREATE TABLE `student` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(11) DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      `cid` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `cid` (`cid`),
      CONSTRAINT `student_ibfk_1` FOREIGN KEY (`cid`) REFERENCES `classes` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
    /*!40101 SET character_set_client = @saved_cs_client */;
    
    --
    -- Dumping data for table `student`
    --
    
    LOCK TABLES `student` WRITE;
    /*!40000 ALTER TABLE `student` DISABLE KEYS */;
    INSERT INTO `student` VALUES (1,'张三',20,1),(2,'李四',21,1),(3,'王五',22,2),(4,'小明',18,2),(5,'小红',17,3);
    /*!40000 ALTER TABLE `student` ENABLE KEYS */;
    UNLOCK TABLES;
    /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
    
    /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
    /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
    /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
    
    -- Dump completed on 2019-07-30 22:03:45

    55.md

    ###Java Web 开发核心组件
    
    Servlet:负责业务逻辑处理,接收客户端请求,作出响应。
    
    JSP:负责用户交互界面,将业务数据展示给用户,并且提供用户操作界面。
    
    EL:简化 JSP 复杂的编码。
    
    JSTL:提供了一组标准标签库,进行开发,使得 JSP 代码更加简洁,JSTL + EL。
    
    Ajax:异步加载,局部刷新。
    
    Filter:对请求和响应进行过滤。
    
    客户端 —> Controller —> Service —> Repository —> DB

     index.jsp

    <%--
      Created by IntelliJ IDEA.
      User: southwind
      Date: 2019-07-30
      Time: 20:03
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
        <table>
          <tr>
            <th>学生编号</th>
            <th>学生姓名</th>
            <th>学生年龄</th>
            <th>所在班级</th>
            <th>操作</th>
          </tr>
          <c:forEach items="${requestScope.list}" var="student">
            <tr>
              <td>${student.id}</td>
              <td>${student.name}</td>
              <td>${student.age}</td>
              <td>${student.classes.name}</td>
              <td>
                <a href="/student.do?method=deleteById&id=${student.id}">删除</a>
                <a href="/student.do?method=findById&id=${student.id}">修改</a>
              </td>
            </tr>
          </c:forEach>
        </table>
      </body>
    </html>

    update.jsp

    <%--
      Created by IntelliJ IDEA.
      User: southwind
      Date: 2019-07-30
      Time: 21:50
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <form action="/student.do?method=update" method="post">
            学生编号:<input type="text" readonly value="${student.id}" name="id"/><br/>
            学生姓名:<input type="text" value="${student.name}" name="name"/><br/>
            学生年龄:<input type="text" value="${student.age}" name="age"/><br/>
            所在班级:<select>
            <c:forEach items="${list}" var="classes">
                <option
                        <c:if test="${student.cid == classes.id}">
                        selected
                        </c:if>
                        value="${classes.id}">${classes.name}</option>
            </c:forEach>
        </select>
        </form>
    </body>
    </html>

     web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
    </web-app>

     

     c3p0-config.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <c3p0-config>
    
        <named-config name="testc3p0">
            
            <!-- 指定连接数据源的基本属性 -->
            <property name="user">root</property>
            <property name="password">root</property>
            <property name="driverClass">com.mysql.jdbc.Driver</property>
            <property name="jdbcUrl">jdbc:mysql://localhost:3306/webdemo?useUnicode=true&amp;characterEncoding=UTF-8</property>
            
            <!-- 若数据库中连接数不足时, 一次向数据库服务器申请多少个连接 -->
            <property name="acquireIncrement">5</property>
            <!-- 初始化数据库连接池时连接的数量 -->
            <property name="initialPoolSize">5</property>
            <!-- 数据库连接池中的最小的数据库连接数 -->
            <property name="minPoolSize">5</property>
            <!-- 数据库连接池中的最大的数据库连接数 -->
            <property name="maxPoolSize">10</property>
        
        </named-config>
            
    </c3p0-config>

     

     StudentServlet.java

    package com.southwind.controller;
    
    import com.southwind.entity.Classes;
    import com.southwind.entity.Student;
    import com.southwind.service.StudentService;
    import com.southwind.service.impl.StudentServiceImpl;
    
    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("/student.do")
    public class StudentServlet extends HttpServlet {
    
        private StudentService studentService = new StudentServiceImpl();
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            this.doPost(req, resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            String method = req.getParameter("method");
            if(method==null){
                method="findAll";
            }
            switch (method){
                case "findAll":
                    List<Student> list = studentService.findAll();
                    req.setAttribute("list",list);
                    req.getRequestDispatcher("index.jsp").forward(req,resp);
                    break;
                case "deleteById":
                    String idStr = req.getParameter("id");
                    Integer id = Integer.parseInt(idStr);
                    studentService.deleteById(id);
                    resp.sendRedirect("/student.do?method=findAll");
                    break;
                case "findById":
                    idStr = req.getParameter("id");
                    id = Integer.parseInt(idStr);
                    Student student = studentService.findById(id);
                    List<Classes> classList = studentService.findAllClasses();
                    req.setAttribute("student",student);
                    req.setAttribute("list",classList);
                    req.getRequestDispatcher("update.jsp").forward(req,resp);
                    break;
            }
    
        }
    }

     Classes.java

    package com.southwind.entity;
    
    import java.util.List;
    
    public class Classes {
        private Integer id;
        private String name;
        private List<Student> students;
    
        public Classes(Integer id, String name) {
            this.id = id;
            this.name = name;
        }
    
        public List<Student> getStudents() {
            return students;
        }
    
        public void setStudents(List<Student> students) {
            this.students = students;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }

    Student.java

    package com.southwind.entity;
    
    public class Student {
        private Integer id;
        private String name;
        private Integer age;
        private Integer cid;
        private Classes classes;
    
        public Integer getCid() {
            return cid;
        }
    
        public void setCid(Integer cid) {
            this.cid = cid;
        }
    
        public Student(Integer id, String name, Integer age, Integer cid) {
            this.id = id;
            this.name = name;
            this.age = age;
            this.cid = cid;
        }
    
        public Classes getClasses() {
            return classes;
        }
    
        public void setClasses(Classes classes) {
            this.classes = classes;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }

     ClassesRepository.java

    package com.southwind.repository;
    
    import com.southwind.entity.Classes;
    
    import java.util.List;
    
    public interface ClassesRepository {
        public Classes findById(Integer id);
        public List<Classes> findAll();
    }

    StudentRepository.java

    package com.southwind.repository;
    
    import com.southwind.entity.Student;
    
    import java.util.List;
    
    public interface StudentRepository {
        public List<Student> findAll();
        public void deleteById(Integer id);
        public Student findById(Integer id);
    }

     ClassesRepositoryImpl.java

    package com.southwind.repository.impl;
    
    import com.southwind.entity.Classes;
    import com.southwind.repository.ClassesRepository;
    import com.southwind.util.JDBCTools;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class ClassesRepositoryImpl implements ClassesRepository {
        @Override
        public Classes findById(Integer id) {
            Connection connection = JDBCTools.getConnection();
            String sql = "select * from classes where id = ?";
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            Classes classes = null;
            try {
                preparedStatement = connection.prepareStatement(sql);
                preparedStatement.setInt(1,id);
                resultSet = preparedStatement.executeQuery();
                if(resultSet.next()){
                    String name = resultSet.getString(2);
                    classes = new Classes(id,name);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JDBCTools.release(connection,preparedStatement,resultSet);
            }
            return classes;
        }
    
        @Override
        public List<Classes> findAll() {
            Connection connection = JDBCTools.getConnection();
            String sql = "select * from classes";
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            List<Classes> list = new ArrayList<>();
            try {
                preparedStatement = connection.prepareStatement(sql);
                resultSet = preparedStatement.executeQuery();
                while(resultSet.next()){
                    int id = resultSet.getInt(1);
                    String name = resultSet.getString(2);
                    Classes classes = new Classes(id,name);
                    list.add(classes);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JDBCTools.release(connection,preparedStatement,resultSet);
            }
            return list;
        }
    }

    StudentRepositoryImpl.java

    package com.southwind.repository.impl;
    
    import com.southwind.entity.Student;
    import com.southwind.repository.StudentRepository;
    import com.southwind.util.JDBCTools;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class StudentRepositoryImpl implements StudentRepository {
        @Override
        public List<Student> findAll() {
            Connection connection = JDBCTools.getConnection();
            String sql = "select * from student";
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            List<Student> list = new ArrayList<>();
            try {
                preparedStatement = connection.prepareStatement(sql);
                resultSet = preparedStatement.executeQuery();
                while(resultSet.next()){
                    int id = resultSet.getInt(1);
                    String name = resultSet.getString(2);
                    int age = resultSet.getInt(3);
                    int cid = resultSet.getInt(4);
                    list.add(new Student(id,name,age,cid));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JDBCTools.release(connection,preparedStatement,resultSet);
            }
            return list;
        }
    
        @Override
        public void deleteById(Integer id) {
            Connection connection = JDBCTools.getConnection();
            String sql = "delete from student where id = ?";
            PreparedStatement preparedStatement = null;
            try {
                preparedStatement = connection.prepareStatement(sql);
                preparedStatement.setInt(1,id);
                preparedStatement.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JDBCTools.release(connection,preparedStatement,null);
            }
        }
    
        @Override
        public Student findById(Integer id) {
            Connection connection = JDBCTools.getConnection();
            String sql = "select * from student where id = ?";
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            Student student = null;
            try {
                preparedStatement = connection.prepareStatement(sql);
                preparedStatement.setInt(1,id);
                resultSet = preparedStatement.executeQuery();
                if(resultSet.next()){
                    String name = resultSet.getString(2);
                    int age = resultSet.getInt(3);
                    int cid = resultSet.getInt(4);
                    student = new Student(id,name,age,cid);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                JDBCTools.release(connection,preparedStatement,resultSet);
            }
            return student;
        }
    }

     StudentService.java

    package com.southwind.service;
    
    import com.southwind.entity.Classes;
    import com.southwind.entity.Student;
    
    import java.util.List;
    
    public interface StudentService {
        public List<Student> findAll();
        public void deleteById(Integer id);
        public Student findById(Integer id);
        public List<Classes> findAllClasses();
    }

     StudentServiceImp.java

    package com.southwind.service.impl;
    
    import com.southwind.entity.Classes;
    import com.southwind.entity.Student;
    import com.southwind.repository.ClassesRepository;
    import com.southwind.repository.StudentRepository;
    import com.southwind.repository.impl.ClassesRepositoryImpl;
    import com.southwind.repository.impl.StudentRepositoryImpl;
    import com.southwind.service.StudentService;
    
    import java.util.List;
    
    public class StudentServiceImpl implements StudentService {
    
        private StudentRepository studentRepository = new StudentRepositoryImpl();
        private ClassesRepository classesRepository = new ClassesRepositoryImpl();
    
        @Override
        public List<Student> findAll() {
            List<Student> list = studentRepository.findAll();
            for(Student student:list){
                Classes classes = classesRepository.findById(student.getCid());
                student.setClasses(classes);
            }
            return list;
        }
    
        @Override
        public void deleteById(Integer id) {
            studentRepository.deleteById(id);
        }
    
        @Override
        public Student findById(Integer id) {
            return studentRepository.findById(id);
        }
    
        @Override
        public List<Classes> findAllClasses() {
            return classesRepository.findAll();
        }
    }

     JDBCTools.java

    package com.southwind.util;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class JDBCTools {
        private static DataSource dataSource;
        static {
            dataSource = new ComboPooledDataSource("testc3p0");
        }
    
        public static Connection getConnection(){
            Connection connection = null;
            try {
                connection = dataSource.getConnection();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return connection;
        }
    
        public static void release(Connection connection, Statement statement, ResultSet resultSet){
            try {
                if(connection!=null){
                    connection.close();
                }
                if(statement!=null){
                    statement.close();
                }
                if(resultSet!=null){
                    resultSet.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    CSS中position小解
    position
    mac默认安装postgresql, 如何让postgresql可以远程访问
    The data directory was initialized by PostgreSQL version 9.6, which is not compatible with this version 10.0.
    active admin gem error
    psql 无法添加超级用户
    ubuntu 15.04 安装Balsamiq Mockups 3
    Rails html 写public里图片的路径
    rails c 历史命令
    undefined local variable or method `per' for []:ActiveRecord::Relation
  • 原文地址:https://www.cnblogs.com/HiJackykun/p/11553671.html
Copyright © 2011-2022 走看看