Java EE——基于Mysql、Servlet、JSP的作业管理系统(1)-准备阶段

1.目标

1)老师:添加作业,添加学生。查询学生作业;
2)学生:根据老师添加的作业,进行作业提交;

2.实现方法

一,数据库方面

(1)数据库的连接和准备工作
连接通过JDBC实现Java连接数据库

参见之前的《JavaEE 学习笔记》link

准备相应的数据库

下载老师发的发的**“javaee.sql”**文件,
一、用cmd的调试环境导入.sql文件中的数据:
WinR键打开cmd输入:

MySQL -u root -p(后面紧跟着密码!!) 
MySQL>use school;					//数据库的库名  
MySQL> sourceD:\javaee.sql

javaee.sql是你下载的数据库的内容,注意javaee.sql是要放在磁盘的最外层目录的,否则无法导入数据。

(2)对于数据库查找和插入操作

以添加学生来举例

通过JDBC向数据库中添加数据,可以使用INSERT语句实现插入数据SQL语句,对于SQL语句中的参数可以只用占位符“?”代替,然后通过PreparedStatement对其赋值以及执行SQL。代码如下:

try(Connection connection = DriverManager.getConnection(url,"root","123456")){  					// 创建连接
        try(Statement statement = connection.createStatement()){                                    				// 通过链接获取statement
            String sql = "insert into s_student (id,name,create_time,update_time) values(? ,?,?,?)";
            
            PreparedStatement ps = connection.prepareStatement(sql);
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
            
            java.util.Date date = new java.util.Date();
            // 为sql语句中第一个问号赋值
            ps.setLong(1,student.getId());
            // 为sql语句中第二个问号赋值
            ps.setString(2, student.getName());
            // 为sql语句中第三个问号赋值
            ps.setTimestamp(3, Timestamp.valueOf(df.format(student.getCreateTime())));
            // 为sql语句中第四个问号赋值
            ps.setTimestamp(4, Timestamp.valueOf(df.format(date.getTime())));
            // 执行sql语句
            ps.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }catch (SQLException e) {
        e.printStackTrace();
    }
}
查找上一次已经说过了,不再赘述

二,Servlet

介绍
什么是Servlet

Servlet 是Java 语言中编写Web服务器扩展功能的重要技术,同时又时JSP技术的底层运行基础。
Servlet是为了解决实现动态页面而衍生的东西,它基于B/S 模式,用来处理请求和发送相应。它是一个规范,编写一个Servlet 实际上是按照Servlet规范编写一个java类,作为web组件,被Servlet容器所管理。

Servlet 和 Tomcat 的关系

上面提到Servlet是一个web组件,需要部署到容器中才能运行,Tomcat就是一个容器,符合一定规范,提供组件运行环境。
Tomcat 是一个web应用服务器,也是一个servlet/jsp 容器。用于将客户端的请求传送给servle容器,servlet容器实例化一个servlet,将请求传送给实例化的servlet,并将servlet的相应传送回客户端。

java中拼接mysql如何转义 javaee mysql_sql

【tomcat服务器接受客户端请求并做出响应】补充描述:
① 客户端(通常都是浏览器)访问web服务器,发送http请求
② web服务器接收到请求后,传递给Servlet容器。
③ Servlet容器加载Servlet,产生Servlet实例后,向其传递表示请求和响应的对象。
④ Servlet实例使用请求对象得到的客户端的请求信息,然后进行相应的处理。
⑤ servlet实例将处理结果通过相应对象发送回客户端,容器负责确保相应正确送出,同时将控制返回给web服务器。

工作原理(请求到web服务器到Servlet流程)

客户端(浏览器)是通过URL 地址访问web服务器中的资源,URL地址(http://hostname: port/contextpath/servletpath)
hostname和port 用来与服务器建立TCP连接,后面的URL 用来选择在服务器中哪个子容器服务用户的请求,这个是在web.xml 中部署完成的。

下面是一个在web.xml部署servlet的例子例子
<servlet>
    <servlet-name>testServlet</servlet-name>									//servlet名称,这个名字自定义,与下面的名字保持一致 
    <servlet-class>com.java.code.class2.servlet.TestServlet</servlet-class>			//servlet的全限定类名,找到servlet在项目中的位置
</servlet>
    <servlet-mapping>
        <servlet-name>testServlet</servlet-name>								//这里的名称必须和上面的</servlet-name> 保持一致
        <url-pattern>/testServletV1</url-pattern>								//<-- 浏览器通过该url 找到servlet -->
    </servlet-mapping>
也可以在Servlet类上面加一个注释 @WebServlet("/********************")来简化部署

三, JSP文件

介绍

1)JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常
以**<%开头
以%>**结束。

2)JSP本质上也是一个servlet!!!!!!
为了servlet展示信息的不方便,引入了JSP。
JSP就是在HTML页面中嵌入了java代码。

3)JSP通过网页表单获取用户输入数据访问数据库及其他数据源,然后动态地创建网页

4)JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。

当浏览器访问.jsp文件。服务器发现后缀为.jsp,它会根据路径找到.jsp文件,会将.jsp翻译成jsp.java文件,对这个java文件进行编译,产生一个jsp.class文件,将class文件加载运行。将JSP翻译成java文件,它是将JSP中的所有的HTML代码通过流进行输出,也就是说最终翻译成class,被虚拟机加载,它本质是servlet,它就会往回响应,响应回去就是把JSP中的HTML代码以流的方式写回浏览器。所以在JSP中展示出了HTML代码。

插入java代码方法

标签

语法

用途

声明标签

<%! 变量或方法声明%>

声明JSP内所使用的全局变量或方法或内部类(它用于定义成员)(写的内容在成员位置上)

表达式

<%= 表达式 %>

输出java中变量或者表达式的值到页面上(它用于输出) out.print(内容)

程序代码标签

<%程序代码%>

编写java程序代码,但不可以定义代码(它用于定义局部)(声明的变量在局部位置_jspService方法中)

下面是一个展示所有学生_作业数据的表格的部分
<table align="center" width = "960" border="1" bgcolor="white" cellpadding="1" cellspacing="1">
    <tr align="center" bgcolor="#f2ffbe" height="30">
        <td>ID</td>				//表格第一行
        <td>学生学号</td>
        <td>作业编号</td>
        <td>作业标题</td>
        <td>作业内容</td>
        <td>创建时间</td>
    </tr>
    <%						//开始插入java代码
        List<StudentHomework> list = (List<StudentHomework>) request.getAttribute("list");	//得到list
        if( list == null || list.size() <= 0 ){											//判定list 不为空
            out.println("none Data");
        }else{
            for(StudentHomework sh : list){											//遍历list

    %>
    <tr align="center">
        <td><%=sh.getId()%></td>		//<%=表达式%> 代表打印一个变量
        <td><%=sh.getStudentId()%></td>
        <td><%=sh.getHomeworkId()%></td>
        <td><%=sh.getHomeworkTitle()%></td>
        <td><%=sh.getHomeworkContent()%></td>
        <td><%=sh.getCreateTime()%></td>
    </tr>
    <%

            }
        }
    %>
</table>

以上就是我们制作这个系统的准备阶段