老师,我的这个好像没连到数据库

老师,我的这个好像没连到数据库

addCourse.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>课程添加</title>
<script type="text/javascript" src="js/jquery-3.4.1.min.js" ></script>
<script type="text/javascript">
	function checkForm() {
		var name = $("#name").val();
		var category = $("#category").val();
		var desp = $("#desp").val();
		if (name == "" || name == null) {
			alert("课程名不能为空");
			return false;
		}
		if (category == "" || category == null) {
			alert("所属方向不能为空");
			return false;
		}
		if (desp == "" || desp == null) {
			alert("课程描述不能为空");
			return false;
		}
		alert("课程添加成功");
		return true;
	}
</script>
</head>
<body>
	<h1>课程添加</h1>
	<form class="form-horizontal" enctype="multipart/form-data"
		onsubmit="return checkForm()" method="post"
		action="${pageContext.request.contextPath }/AddCourseServlet">

		课程名:<input name="name" id="name"><br/> 
		所属方向:<input name="category" id="category"><br/> 
		课程描述:<input name="desp" id="desp"><br/>
		<button type="submit" class="btn btn-primary">添加</button>
	</form>
</body>
</html>

AddCourseServlet

package com.linmin.servlet;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

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 org.junit.Test;

import com.linmin.utils.JDBCUtils2;

@WebServlet("/AddCourseServlet")
public class AddCourseServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	@Test
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取输入的数据
		String name = (String)request.getParameter("name");
		String category = (String)request.getParameter("category");
		String desp = (String)request.getParameter("desp");
		System.out.println(name + "  " + category + "  " + desp);
		
		//连接数据库
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try{
			// 获得连接:
			// conn = dataSource.getConnection();
			conn = JDBCUtils2.getConnection();
			// 编写Sql:
			String sql = "insert into course values (null,?,?,?)";
			// 预编译SQL:
			pstmt = conn.prepareStatement(sql);
			// 设置参数
			pstmt.setString(1, name);
			pstmt.setString(2, category);
			pstmt.setString(3, desp);
			// 执行SQL:
			int num = pstmt.executeUpdate();
			if(num > 0){
				System.out.println("保存成功!");	
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			JDBCUtils2.release(rs, pstmt, conn);
		}
		// 显示处理结果
		response.sendRedirect(request.getContextPath() + "/showCourse.jsp");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

showCourse.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>课程</title>
</head>
<body>
	<h1>添加成功</h1>
		
		<table class="table table-striped">
				<thead>
					<tr>
						<th>课程名称</th>
						<th>所属方向</th>
						<th>课程描述</th>
						<th>创建时间</th>

					</tr>
				</thead>
				<tbody id="cont">
					<c:forEach items="${courses }" var="course">
						<tr id="tr1">
							<td>${course.name }</td>
							<td>${course.category }</td>
							<td>${course.desp }</td>
							<td>${course.createTime }</td>
						</tr>
					</c:forEach>
				</tbody>
			</table>
</body>
</html>

ShowCourseServlet

package com.linmin.servlet;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

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 org.junit.Test;

import com.linmin.domain.Course;
import com.linmin.utils.JDBCUtils2;

@WebServlet("/ShowCourseServlet")
public class ShowCourseServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
      
	@Test
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		List<Course> courses = new ArrayList<Course>();
		// 连接数据库
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			// 获得连接:
			// conn = dataSource.getConnection();
			conn = JDBCUtils2.getConnection();
			// 编写Sql:
			String sql = "select * from course";
			// 预编译SQL:
			pstmt = conn.prepareStatement(sql);
			// 执行SQL:
			rs = pstmt.executeQuery();
			while(rs.next()){
				Course course = new Course(rs.getInt("id"),rs.getString("name"),
						rs.getString("category"),rs.getString("desp"),rs.getDate("createTime"));
				courses.add(course);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCUtils2.release(rs, pstmt, conn);
		}
		request.getSession().setAttribute("courses", courses);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

JDBCUtils2

package com.linmin.jdbc.utils;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * JDBC的工具类,连接池
 */
public class JDBCUtils2 {
	private static final ComboPooledDataSource dataSource = new ComboPooledDataSource();
	
	/**
	 * 获得连接的方法:
	 * @throws SQLException 
	 */
	public static Connection getConnection() throws Exception{
		Connection conn = dataSource.getConnection();
		return conn;
	}
	
	/**
	 * 资源释放
	 */
	public static void release(Statement stmt,Connection conn){
		if(stmt != null){
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			stmt = null;
		}
		if(conn != null){
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			conn = null;
		}
	}
	
	public static void release(ResultSet rs,Statement stmt,Connection conn){
		if(rs!= null){
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			rs = null;
		}
		if(stmt != null){
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			stmt = null;
		}
		if(conn != null){
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			conn = null;
		}
	}
}

c3p0配置

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>

  <default-config>
    <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
	<property name="jdbcUrl">jdbc:mysql://localhost:3307/imooc?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF8&amp;serverTimezone=GMT%2B8</property>
	<property name="user">root</property>
	<property name="password">linmin19970721</property>
	<property name="initialPoolSize">5</property>
	<property name="maxPoolSize">20</property>
  </default-config>
  
</c3p0-config>

http://img1.sycdn.imooc.com//climg/5e61ce5d09da1e6b04220825.jpg

我的AddCourseServlet也没获取到数据,能实现页面跳转,但是添加不了数据,也显示不了数据

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿满 2020-03-06 18:32:57

同学你好,建议同学在如下位置处循环输出一下courses,查看是否有从数据库中查询到值。

http://img1.sycdn.imooc.com//climg/5e6226ba092f598608370264.jpg

祝:学习愉快~

  • 提问者 木木汇成林 #1
    老师,我将两个servlet合并成了一个,控制台中可以输出数据库中的值,但是报错为:提交响应后无法创建会话。
    2020-03-07 14:15:29
  • 好帮手慕阿满 回复 提问者 木木汇成林 #2
    同学你好,建议同学将合并后的代码以及报错信息具体贴一下,方便我们查看具体问题。祝:学习愉快~
    2020-03-07 16:31:30
好帮手慕阿满 2020-03-06 16:00:46

同学你好,在form表单中有enctype="multipart/form-data",在使用包含文件上传控件的表单时,必须使用该值,有该值时,servlet中不能使用getParameter()接收数据,如:

http://img1.sycdn.imooc.com//climg/5e62019909d93ec707170228.jpg

在同学的表单中并没有上传文件,建议同学删除enctype再试试。如果有报错,请将报错信息贴一下。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 木木汇成林 #1
    修改后可以获取到值了,添加的数据可以添加到数据库中,但是在showCourse页面显示不出数据
    2020-03-06 16:30:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师