美文网首页
Interllij idea Maven Tomcat 项目,用

Interllij idea Maven Tomcat 项目,用

作者: 两分与桥 | 来源:发表于2018-08-24 17:55 被阅读161次

注意:我使用的是Interllij idea来编辑项目的,运行代码之前要自行下载一个tomcat,在项目中引入tomcat中lib文件夹中的jar包,这样可以使得我们不需要导入过多的包
运行项目之前,还需要安装一个MySQL数据库,并使其运行,数据库名称和表名称都可以在下面参数中修改,可以参考我的数据表

CREATE TABLE IF NOT EXISTS `think_test` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL,
  `age` int(4) NOT NULL,
  `sex` varchar(64) NOT NULL,
  `course` varchar(64) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=25 ;

-- 转存表中的数据 `think_test`

INSERT INTO `think_test` (`id`, `name`, `age`, `sex`, `course`) VALUES
(19, 'talent', 21, '1', 'julia'),
(20, 'aa', 21, '1', 'python'),
(22, 'libai', 23, '1', 'highMath');

还有一点,代码中与网页交互中通讯没有检测状态,只是纯粹的打印到控制台,增加学生提交数据时的格式也没有过检测
整个项目的文件结构


1.png

dao包下的dao接口, StudentDao

package dao;

import entity.Student;
import java.util.List;

public interface StudentDao {
    List<Student> findAll();

    void insert(Student student);

    void delete(Integer id);

    void update(Student student);

    Student find(Integer id);
}

接口StudentDao的实现类

package dao;

import db.DBUtils;
import entity.Student;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class StudentDaoImpl implements StudentDao{

    @Override
    public List<Student> findAll(){
        List<Student> list = new ArrayList<Student>();
        Connection conn = null;
        try{
            conn = DBUtils.getConnection();
            Statement st = conn.createStatement();
            String sql = "SELECT * FROM  think_test ORDER BY id";
            ResultSet rs = st.executeQuery(sql);
            while (rs.next()){
                Integer id = rs.getInt("id");
                String name = rs.getString("name");
                Integer age = rs.getInt("age");
                String sex = rs.getString("sex");
                String course = rs.getString("course");

                Student s = new Student();
                s.setId(id);
                s.setName(name);
                s.setAge(age);
                s.setSex(sex);
                s.setCourse(course);

                list.add(s);
            }
            System.out.println("返回list");
            return list;
        }catch (Exception e){
            e.printStackTrace();
            throw new RuntimeException("获取数据失败", e);
        } finally {
            DBUtils.close(conn);
            System.out.println("归还连接");
        }
    }

    @Override
    public void insert(Student s) {
            Connection conn = null;
        try {
            conn = DBUtils.getConnection();
            String sql = "INSERT INTO think_test (name, age, sex, course) VALUES(?, ?, ?, ?)";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, s.getName());
            ps.setInt(2, s.getAge());
            ps.setString(3, s.getSex());
            ps.setString(4, s.getCourse());

            System.out.println("ps = " + ps);

            int back = ps.executeUpdate();
            System.out.println("执行结果:" + back);

        }catch (Exception e){
            e.printStackTrace();
            throw new RuntimeException("保存数据错误", e);
        } finally {
            DBUtils.close(conn);
        }
    }

    @Override
    public void delete(Integer id){
        Connection conn = null;
        try {
            conn = DBUtils.getConnection();
            String sql = "DELETE FROM think_test WHERE id=?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, id);
            int back = ps.executeUpdate();
            System.out.println("删除 back = " + back);

        } catch (Exception e){
            e.printStackTrace();
            throw new RuntimeException("删除出错", e);
        } finally {
            DBUtils.close(conn);
        }
    }

    @Override
    public Student find(Integer id){
        Connection conn = null;
        try{
            conn = DBUtils.getConnection();
            String sql = "SELECT * FROM think_test WHERE id=?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, id);
            ResultSet rs = ps.executeQuery();
            Student student = new Student();
            while(rs.next()){
                id = rs.getInt("id");
                String name = rs.getString("name");
                Integer age = rs.getInt("age");
                String sex = rs.getString("sex");
                String course = rs.getString("course");

                System.out.println("name = " + name);
                student.setId(id);
                student.setName(name);
                student.setAge(age);
                student.setSex(sex);
                student.setCourse(course);
            }
            return student;
        } catch (Exception e){
            e.printStackTrace();
            throw new RuntimeException("查询数据出错");
        } finally {
            DBUtils.close(conn);
        }
    }

    @Override
    public void update(Student student){
        Connection conn = null;
        try{
            conn = DBUtils.getConnection();
            String sql = "UPDATE think_test SET name=?,age=?,sex=?,course=? WHERE id=?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, student.getName());
            ps.setInt(2, student.getAge());
            ps.setString(3, student.getSex());
            ps.setString(4, student.getCourse());
            ps.setInt(5, student.getId());

            int back = ps.executeUpdate();
            System.out.println("更新 back = " + back);

        } catch (Exception e){
            e.printStackTrace();
            throw new RuntimeException("更新数据出错");
        } finally {
            DBUtils.close(conn);
        }
    }
}

db包下的数据库连接池DBUtils类

package db;

import org.apache.commons.dbcp.BasicDataSource;

import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;

public class DBUtils {
    private static String driver;
    private static String url;
    private static String username;
    private static String password;
    private static int initialSize;
    private static int maxActive;

    private static BasicDataSource ds;

    static{
        try {
            Properties cfg = new Properties();
            InputStream input = DBUtils.class.getClassLoader().getResourceAsStream("db.properties");
            cfg.load(input);
            driver = cfg.getProperty("jdbc.driver");
            url = cfg.getProperty("jdbc.url");
            username = cfg.getProperty("jdbc.username");
            password = cfg.getProperty("jdbc.password");
            initialSize = Integer.valueOf(cfg.getProperty("initialSize"));
            maxActive = Integer.valueOf(cfg.getProperty("maxActive"));

            ds = new BasicDataSource();
            ds.setDriverClassName(driver);
            ds.setUrl(url);
            ds.setUsername(username);
            ds.setPassword(password);
            ds.setInitialSize(initialSize);
            ds.setMaxActive(maxActive);

        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public static Connection getConnection(){
        Connection conn = null;
        try{
            conn = ds.getConnection();
            return conn;
        }catch (Exception e){
            e.printStackTrace();
            throw new RuntimeException("获取错误");
        }
    }

    public static void close(Connection conn){
        if(conn != null){
            try {
                conn.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}

实体类我放在entity包下,Student类

package entity;

import java.io.Serializable;

public class Student implements Serializable {
    private int id;
    private String name;
    private String sex;
    private String course;
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getCourse() {
        return course;
    }

    public void setCourse(String course) {
        this.course = course;
    }

    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 getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

web包下的MainServlet,处理CURD的逻辑

package web;

import dao.StudentDao;
import dao.StudentDaoImpl;
import entity.Student;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

import java.io.PrintWriter;
import java.util.*;

public class MainServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        String path = req.getServletPath();
        System.out.println("path = " + path);
        if("/findStudent.do".equals(path)){
            findStudent(req, res);
        }else if("/addStudentPage.do".equals(path)){
            addStudentPage(req, res);
        }else if("/addStudent.do".equals(path)){
            addStudent(req, res);
        }else if("/deleteStudent.do".equals(path)){
            deleteStudent(req, res);
        }else if("/editStudentPage.do".equals(path)){
            editStudentPage(req, res);
        }else if("/editStudent.do".equals(path)){
            editStudent(req, res);
        } else{
            throw new RuntimeException("找不到页面");
        }
    }

    protected void findStudent(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        StudentDao studentDao = new StudentDaoImpl();
        List<Student> list = studentDao.findAll();
        req.setAttribute("list", list);
        req.getRequestDispatcher("WEB-INF/student/findStudent.jsp").forward(req, res);
    }

    protected void addStudentPage(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        req.getRequestDispatcher("WEB-INF/student/addStudentPage.jsp").forward(req, res);
    }

    protected void addStudent(HttpServletRequest req, HttpServletResponse res) throws IOException {
        req.setCharacterEncoding("utf-8");
        String name = req.getParameter("name");
        String age = req.getParameter("age");
        String sex = req.getParameter("sex");
        String course = req.getParameter("course");

        Student student = new Student();
        student.setName(name);
        student.setAge(Integer.valueOf(age));
        student.setSex(sex);
        student.setCourse(course);

        StudentDao studentDao = new StudentDaoImpl();
        studentDao.insert(student);

        res.sendRedirect("findStudent.do");
    }

    protected void deleteStudent(HttpServletRequest req, HttpServletResponse res) throws IOException {
        req.setCharacterEncoding("utf-8");
        String id = req.getParameter("id");
        System.out.println("id = " + id);

        StudentDao studentDao = new StudentDaoImpl();
        String data = null;
        try {
            studentDao.delete(Integer.valueOf(id));
             data = "删除成功";

        } catch (Exception e){
            data = "删除失败";
        }

        res.setContentType("text/html;charset=utf-8");
        PrintWriter out = res.getWriter();
        out.println(data);
        out.close();
    }

    protected void editStudent(HttpServletRequest req, HttpServletResponse res) throws IOException {
        req.setCharacterEncoding("utf-8");
        String id = req.getParameter("id");
        String name = req.getParameter("name");
        String age = req.getParameter("age");
        String sex = req.getParameter("sex");
        String course = req.getParameter("course");

        Student student = new Student();
        student.setId(Integer.valueOf(id));
        student.setName(name);
        student.setAge(Integer.valueOf(age));
        student.setSex(sex);
        student.setCourse(course);

        StudentDaoImpl studentDao = new StudentDaoImpl();
        studentDao.update(student);

        res.sendRedirect("findStudent.do");
    }

    protected void editStudentPage(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        Integer id = Integer.valueOf(req.getParameter("id"));
        StudentDaoImpl studentDao = new StudentDaoImpl();
        Student s = studentDao.find(id);
        req.setAttribute("student", s);
        req.getRequestDispatcher("WEB-INF/student/editStudentPage.jsp").forward(req, res);
    }
}

resource包下的db.properties保存数据库连接参数

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/test
jdbc.username=root
jdbc.password=root

initialSize=2
maxActive=2

在web.xml中我们只需要配置一个路径

    <servlet>
        <servlet-name>main</servlet-name>
        <servlet-class>web.MainServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>main</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

下面的就是jsp文件了
FindStudent.jsp文件

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/8/23/023
  Time: 10:09
  To change this template use File | Settings | File Templates.
--%>
<%@page isELIgnored="false"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>Title</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="/static/bootstrap.css">
    <script src="/static/jquery-3.3.1.min.js"></script>
    <script src="/static/bootstrap.js"></script>
</head>
<body>

    <div class="container">
        <a type="button" class="btn btn-info" style="float: right;margin: 10px;" href="addStudentPage.do">增加学生</a>
        <table class="table table-striped table-bordered" style="margin: 30px auto; text-align: center;">
            <tr>
                <td>编号</td>
                <td>名称</td>
                <td>年龄</td>
                <td>性别</td>
                <td>课程</td>
                <td>操作</td>
            </tr>
            <c:forEach items="${list}" var="l">
            <tr>
                <td>${l.id}</td>
                <td>${l.name}</td>
                <td>${l.age}</td>
                <td>
                    <c:if test="${l.sex == '1'}">男</c:if>
                    <c:if test="${l.sex == '0'}">女</c:if>
                </td>
                <td>${l.course}</td>
                <td name="${l.id}">
                    <a type="button" class="btn btn-warning edit-btn" href="editStudentPage.do?id=${l.id}">修改</a>
                    <button type="button" class="btn btn-danger delete-btn" data-toggle="modal"  data-target="#deleteModal">删除</button>
                </td>
            </tr>
            </c:forEach>
        </table>
    </div>

    <!-- Modal -->
    <div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModal">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title" id="myModalLabel"><span style="color: red;">注意</span></h4>
                </div>
                <div class="modal-body">
                    <p>是否确定删除编号为 <span id="id" style="color: red;"></span> 、名称为 <span id="name" style="color: red;"></span> 的学生??</p>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal" id="delete-cancel">取消</button>
                    <button type="button" class="btn btn-primary" id="delete-certain">确定</button>
                </div>
            </div>
        </div>
    </div>

    <script>
        $(".delete-btn").on("click", function () {
            var id = $(this).parent().attr("name");
            var name = $(this).parent().parent().children().eq(1).text();
            $("#id").text(id);
            $("#name").text(name);
        });

        $("#delete-certain").on("click", function () {
            var id = $("#id").text();
            $.ajax({
                url: "deleteStudent.do",
                type: "POST",
                data: {'id' : id},
                success: function (result) {
                    console.log(result);

                    setTimeout(function (args) { $('#delete-cancel').click();$('td[name=' + id + ']').parent()[0].remove(); }, 600);
                },
                error:function (result) {
                    console.log(result);
                }
            })
        })
    </script>
</body>
</html>

addStudent.jsp文件

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/8/23/023
  Time: 17:01
  To change this template use File | Settings | File Templates.
--%>
<%@page isELIgnored="false" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="/static/bootstrap.css">
</head>
<body>
    <div class="container">
        <form class="form-horizontal" style="margin-top: 30px;" action="addStudent.do" method="post">
            <div class="form-group">
                <label for="name" class="col-sm-2 control-label">名称</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" id="name" placeholder="请输入名称" name="name">
                </div>
            </div>
            <div class="form-group">
                <label for="age" class="col-sm-2 control-label">年龄</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" id="age" placeholder="请输入年龄" name="age">
                </div>
            </div>
            <div class="form-group">
                <label for="sex" class="col-sm-2 control-label">性别</label>
                <div class="col-sm-10">
                    <select class="form-control" id="sex" name="sex">
                        <option value="1">男</option>
                        <option value="0">女</option>
                    </select>
                </div>
            </div>
            <div class="form-group">
                <label for="course" class="col-sm-2 control-label">课程</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" id="course" placeholder="请输入课程" name="course">
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <button type="submit" class="btn btn-default">提交</button>
                </div>
            </div>
        </form>
    </div>
</body>
</html>

editStudent.jsp,与增加是差不多的页面

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/8/23/023
  Time: 17:01
  To change this template use File | Settings | File Templates.
--%>
<%@page isELIgnored="false" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>Title</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="/static/bootstrap.css">
</head>
<body>
    <div class="container">
        <form class="form-horizontal" style="margin-top: 30px;" action="editStudent.do" method="post">
            <div class="form-group">
                <label for="name" class="col-sm-2 control-label">名称</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" id="name" placeholder="请输入名称" name="name" value="${student.name}">
                    <input type="hidden" class="form-control" name="id" value="${student.id}">
                </div>
            </div>
            <div class="form-group">
                <label for="age" class="col-sm-2 control-label">年龄</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" id="age" placeholder="请输入年龄" name="age" value="${student.age}">
                </div>
            </div>
            <div class="form-group">
                <label for="sex" class="col-sm-2 control-label">性别</label>
                <div class="col-sm-10">
                    <select class="form-control" id="sex" name="sex">
                        <c:if test="${student.sex == '1'}"><option value="1" selected>男</option><option value="0">女</option></c:if>
                        <c:if test="${student.sex == '0'}"><option value="1">男</option><option value="0" selected>女</option></c:if>
                    </select>
                </div>
            </div>
            <div class="form-group">
                <label for="course" class="col-sm-2 control-label">课程</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" id="course" placeholder="请输入课程" name="course" value="${student.course}">
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <button type="submit" class="btn btn-default">提交</button>
                </div>
            </div>
        </form>
    </div>
</body>
</html>

maven导包

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.46</version>
    </dependency>
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
  </dependencies>
2.png 3.png 4.png 5.png

分享代码:链接:https://pan.baidu.com/s/1e1PpxsknbQttDk5HVnMMRg 密码:x2bn

相关文章

网友评论

      本文标题:Interllij idea Maven Tomcat 项目,用

      本文链接:https://www.haomeiwen.com/subject/yqjiiftx.html