JAVA 学习记录(2)

本章节学习了使用JDBC连接MYSQL数据库 ,并将数据库中信息使用jsp和servlet呈现在页面上。

servlet介绍

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

JSP 介绍

JSP(Java Server Pages)是Sun 公司指定的一种服务器端动态页面技术的组件规范,Jsp是以“.jsp”为后缀的文件,在该文件中主要是html 和少量的java 代码。jsp 文件在容器中会转换成Servlet中执行。

以下是一个作业管理系统的简单实现
老师:添加作业,添加学生,查询学生作业
学生:作业提交,查询布置的作业
先对功能进行演示
初始界面
在这里插入图片描述
进入老师界面
在这里插入图片描述
添加作业

在这里插入图片描述
点击确定后
在这里插入图片描述
学生可以看到添加的作业,接下来进入学生端
在这里插入图片描述
表格中出现了刚刚添加的作业

其余功能大同小异,不做演示,可自行下载源码进行操作
接下来对源码进行简单的介绍
以下介绍以homework为例,其他两个模块大同小异
首先是sql建表

DROP TABLE if exists `school`.`s_homework`;
CREATE TABLE `school`.`s_homework` (
  `id` BIGINT NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(20) NULL,
  `content` TEXT NULL,
  `create_time` TIMESTAMP NOT NULL,
  `update_time` VARCHAR(45) NULL,
  PRIMARY KEY (`id`));


然后建立module层,建立homework类

package module;

import java.util.Date;

public class Homework {

    private Long id;

    private String name;

    private String content;

    private String createTime;

    private Date updateTime;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String homeworkTitle) {
        this.name = homeworkTitle;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String homeworkTitle) {
        this.content = homeworkTitle;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}

使用JDBC连接表,建立一个对该表的查询方法和一个对该表的添加功能
对该表进行查询,并将返回结果放到list中

public static List<Homework> selectAll(){

    String url = "jdbc:mysql://localhost:3306/school?&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";

    String user="root";

    String password="root";

    String driverName = "com.mysql.cj.jdbc.Driver";

    String sqlString = "SELECT * FROM s_homework";

    try {
        // 加载驱动
        Class.forName(driverName);

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

    List<Homework> list = new ArrayList<>();
    try(Connection connection =  DriverManager.getConnection(url, user, password)) {
        try(Statement statement = connection.createStatement()){
            try(ResultSet resultSet = statement.executeQuery(sqlString)){
                // 获取执行结果
                while (resultSet.next()){
                    Homework hw = new Homework();
                    hw.setId(resultSet.getLong("id"));
                    hw.setName(resultSet.getString("title"));
                    hw.setContent(resultSet.getString("content"));
                    hw.setCreateTime(resultSet.getString("create_time"));
                    list.add(hw);
                }
            }
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }

    return list;
}

在servlet中调用该方法,将得到的list发送到到jsp页面上进行显示

@WebServlet("/Homeworklist")
public class HomeworkServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        List<Homework> list = HomeworkJdbc.selectAll();

        req.setAttribute("list", list);

        req.getRequestDispatcher("homework.jsp").forward(req, resp);
    }
}

jsp代码如下,注意JSP中的java代码一定要放到 <%%>中,html标签不能放入其中

<%@ page import="module.Homework" %>
<%@ page import="jdbc.HomeworkJdbc" %>
<%@ page import="java.util.List" %><%--
  Created by IntelliJ IDEA.
  User: zht
  Date: 2020/3/13
  Time: 18:31
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<table align="center" width="960" border="1"
       bgcolor="black" cellpadding="1" cellspacing="1">
    <tr align="center" bgcolor="#7fffd4" height="50">
        <td>作业编号</td>
        <td>作业标题</td>
        <td>作业要求</td>
        <td>创建时间</td>
    </tr>
    <%
        List<Homework> list = HomeworkJdbc.selectAll();
        if(null == list || list.size() <= 0){
            out.print("None data.");
        }else {
            for (Homework hw : list){
    %>
    <tr align="center" bgcolor="white" height="30">
        <td><%=hw.getId()%></td>
        <td><%=hw.getName()%></td>
        <td><%=hw.getContent()%></td>
        <td><%=hw.getCreateTime()%></td>
    </tr>
    <%
            }
        }
    %>
</table>

</body>
</html>

至此即完成了显示部分的功能

接着建立一个对该表进行添加的方法,去完成对表进行添加的功能


public static void 


addStudentHomework(Homework hw){

    String url = "jdbc:mysql://localhost:3306/school?&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";

    String user="root";

    String password="root";

    String driverName = "com.mysql.cj.jdbc.Driver";

    String sqlString = "INSERT INTO s_homework(`id`,`title`,`content`,`create_time`) VALUES('"+hw.getId()+"','"+hw.getName()+"','"+hw.getContent()+"','"+hw.getCreateTime()+"')";
    try {
        // 加载驱动
        Class.forName(driverName);

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

    try(Connection connection =  DriverManager.getConnection(url, user, password)) {
        try(Statement statement = connection.createStatement()){
            statement.executeUpdate(sqlString);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }

}

然后是添加部分的jsp,通过form表单进行提交,将添加作业的信息发送到servlet

<html>
<head>
    <title>添加作业</title>
</head>
<body>
<center>
    <h1 style="color:red">添加作业</h1>
    <form id="indexform" name="/addhomework" action="/student_system_war_exploded/addhomework" method="post">
        <table border="0">
            <tr>
                <td>id:</td>
                <td><input type="text" name="hw_id"></td>
            </tr>
            <tr>
                <td>作业名字</td>
                <td><input type="text" name="hw_name"></td>
            </tr>
            <tr>
                <td>作业内容</td>
                <td><input type="text" name="content"></td>
            </tr>
            <tr>
                <td>创建时间</td>
                <td><input type="text" name="create_time"></td>
            </tr>
        </table>
        <br>
        <input type="submit" value="确定" style="color:#BC8F8F">
    </form>
    <form action="teacher.jsp">
        <input type="submit" value="返回" style="color:#BC8F8F">
    </form>
</center>

</body>
</html>

servlet将得到的信息存到homework类的一个实体中,调用jdbc方法将其添加到数据库中

@WebServlet("/addhomework")
public class AddHomeworkServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        Homework hm = new Homework();

        req.setCharacterEncoding("utf-8");
        hm.setId(Long.parseLong(req.getParameter("hw_id")));
        hm.setName(req.getParameter("hw_name"));
        hm.setContent(req.getParameter("content"));
        hm.setCreateTime(req.getParameter("create_time"));

        StudentHomeworkJdbc.addStudentHomework(hm);

        resp.sendRedirect("success.jsp");
    }

}

以上即完成了对作业的添加

具体源码可以参考

https://github.com/zht777/JAVE-02

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值