课堂练习-增加信息
1.题目

按照图片要求设计添加新课程界面。(0.5分)
在后台数据库中建立相应的表结构存储课程信息。(0.5分)
实现新课程添加的功能。 要求判断任课教师为王建民、刘立嘉、刘丹、王辉、杨子光五位教师的其中一位。(0.5分)
要求上课地点开头为“一教、二教、三教、基教”中的一种。(0.5分)
实现数据存储功能。(3分)
2.程序设计思想
 首先要建立相关类User,定义相关的设置和返回函数,然后再定义IUserDao类,负责定义要实现方法名,在定义UserDaoImpl实现这些函数,再定义UsrException类负责抛出异常,定义DBUtil类负责加载驱动、创建链接对象、创建语句传输对象、接收结果集对象、遍历关闭资源,然后再相应的定义add.jsp负责从客户端接受的参数判断是否为要求输入的具体名称,addInput.jsp负责界面样式。
3.程序源代码
IUserDao.java
package com.jaovo.msg.dao;
import java.util.List;
import com.jaovo.msg.model.User;
public interface IUserDao 
{
	  public void add(User user);
	  public void delete(int id);
	  public void update(User user);
	  public User load(int id);
	  public User load(String name);
	  public List<User> load();
}
UserDaoImpl.java
package com.jaovo.msg.dao;
import java.util.List;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import com.jaovo.msg.Util.DBUtil;
import com.jaovo.msg.Util.UserException;
import com.jaovo.msg.model.User;
public class UserDaoImpl implements IUserDao {
	  @Override
	  public void add(User user) {
		  Connection connection=DBUtil.getConnection();                                          //获得链接对象
		  String sql="select count(*) from t_user where kecheng=?";        //准备sql语句
		  PreparedStatement preparedStatement=null;
		  ResultSet resultSet=null;                  //创建语句传输对象
		  try {
			  preparedStatement=connection.prepareStatement(sql);
			  preparedStatement.setString(1, user.getKecheng());      //接收结果集
			  resultSet=preparedStatement.executeQuery();        //遍历结果集
			  while(resultSet.next())
			  {
				    if(resultSet.getInt(1)>0)
				    {
					      throw new UserException("用户已存在");
				    }
			  }
			  sql="insert into t_user(kecheng,jiaoshi,didian) value (?,?,?)";
			  preparedStatement=connection.prepareStatement(sql);
			  preparedStatement.setString(1, user.getKecheng());
			  preparedStatement.setString(2, user.getJiaoshi());
			  preparedStatement.setString(3, user.getDidian());
			  preparedStatement.executeUpdate();
			  } catch (SQLException e) {
			  // TODO 自动生成的 catch 块
			  e.printStackTrace();
		  }finally
		  {
			  DBUtil.close(resultSet);
			  DBUtil.close(preparedStatement);
			  DBUtil.close(connection);
		  }
		
	 }
  @Override
	  public void delete(int id) {
		  // TODO 自动生成的方法存根
		
	  }
	  @Override                                                      //未实现的方法
	  public void update(User user) {
		  // TODO 自动生成的方法存根
		
	  }
	  @Override
	  public User load(int id) {
		  // TODO 自动生成的方法存根
		  return null;
	  }
	  @Override
	  public User load(String name) {
		  // TODO 自动生成的方法存根
		  return null;
	  }
	  @Override
	  public List<User> load() {
		  // TODO 自动生成的方法存根
		  return null;
	  }
}
User.java
package com.jaovo.msg.model;
public class User {
	  private int id;
	  private String kecheng;
	  private String jiaoshi;
	  private String didian;
	  public int getId() {
		  return id;
	  }
	  public void setId(int id) {
		  this.id = id;
	  }
	  public String getKecheng() {                                         //设置赋值和返回函数
		  return kecheng;
	  }
	  public void setKecheng(String kecheng) {
		  this.kecheng = kecheng;
	  }
	  public String getJiaoshi() {
		  return jiaoshi;
	  }
	  public void setJiaoshi(String jiaoshi) {
		  this.jiaoshi = jiaoshi;
	  }
	  public String getDidian() {
		  return didian;
	  }
	  public void setDidian(String didian) {
		  this.didian = didian;
	  }
	
}
DBUtil.java
package com.jaovo.msg.Util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBUtil {
	  public static Connection getConnection()
	  {
		  try
		  {
			    Class.forName("com.mysql.jdbc.Driver").newInstance();
		
		  }catch(InstantiationException|IllegalAccessException|ClassNotFoundException e) {
			  e.printStackTrace();
		  }
		  String user="root";
		  String password="root";
		  String url="jdbc:mysql://localhost:3306/jaovo_msg";
		  Connection connection=null;
		  try {
			    connection=DriverManager.getConnection(url,user,password);
		  } catch (SQLException e) {
			  // TODO 自动生成的 catch 块
			  e.printStackTrace();
		  }
		  return connection;
	  }
	  public static void close(Connection connection)
	  {
		  try {
			    if(connection!=null)
			    {
				      connection.close();
			    }
		  } catch (SQLException e) {
			  // TODO 自动生成的 catch 块
			  e.printStackTrace();
		  }
  }
  public static void close(PreparedStatement preparedStatement)
	  {
		  try {
				    if(preparedStatement!=null)
				    {
					      preparedStatement.close();
				    }
			  } 
			  catch (SQLException e)
			  {
				  // TODO 自动生成的 catch 块
				  e.printStackTrace();
			  }
  }
	  public static void close(ResultSet resultSet)
	  {
		  try {
				    if(resultSet!=null)
				    {
					      resultSet.close();
				    }
			   } 
			  catch (SQLException e)
			  {
				  // TODO 自动生成的 catch 块
				  e.printStackTrace();
			  }
  }
	
}
UserException.java
package com.jaovo.msg.Util;
public class UserException extends RuntimeException{
   public UserException() {
		  super();
		  // TODO 自动生成的构造函数存根
	  }
	  public UserException(String arg0, Throwable arg1, boolean arg2, boolean arg3) {
		  super(arg0, arg1, arg2, arg3);
		  // TODO 自动生成的构造函数存根
	  }
	  public UserException(String arg0, Throwable arg1) {                                            //抛出异常
		  super(arg0, arg1);
		  // TODO 自动生成的构造函数存根
	  }
	  public UserException(String arg0) {
		  super(arg0);
		  // TODO 自动生成的构造函数存根
	  }
	  public UserException(Throwable arg0) {
		  super(arg0);
		  // TODO 自动生成的构造函数存根
	  }
}
add.jsp
<%@page import="com.jaovo.msg.Util.UserException"%>
<%@page import="com.jaovo.msg.dao.UserDaoImpl"%>
<%@page import="com.jaovo.msg.model.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%
	  //接收客户端传递过来的参数
	  String kecheng = request.getParameter("kecheng");
	  String jiaoshi = request.getParameter("jiaoshi");
	  String didian = request.getParameter("didian");
	  if(kecheng == null || "".equals(kecheng.trim())){
		  request.setAttribute("error", "输入信息不能为空");
	
	
%>
	<jsp:forward page="addInput.jsp"></jsp:forward>
<%
	}
	  if((!(jiaoshi.equals("王建民")||jiaoshi.equals("刘力嘉")||jiaoshi.equals("刘丹")||jiaoshi.equals("王辉")||jiaoshi.equals("杨子光")))||(!(didian.equals("一教")||didian.equals("二教")||didian.equals("三教")||didian.equals("基教"))))
	  {
		    request.setAttribute("error", "信息输入有误");                   //判断是否为规定要求的名称
		
		
		%>
			<jsp:forward page="addInput.jsp"></jsp:forward>
		<%
	}
		  User user = new User();
		  user.setKecheng(kecheng);
		  user.setJiaoshi(jiaoshi);
		  user.setDidian(didian);
		
		  UserDaoImpl userDao = new UserDaoImpl();
		  try{
		  userDao.add(user);
%>
	  用户保存成功!!<br>
	  <a href="addInput.jsp">继续添加</a><br>
<%
	  }catch(UserException e){
%>
	  <h2 style="color:red ; font-size:50px">发生错误 : <%=e.getMessage() %></h2>
	<%
	  }
	%>
</html>
addInput.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<title>用户添加页面</title>
</head>
<body>
	<%=request.getAttribute("error") %>
	
	<form action="add.jsp" method="get">
		  <table align="center" border="1" width="500">
			  <tr>
				    <td>课程信息 : </td>
				    <td>
					    <input type="text" name="kecheng" />
				    </td>
			  </tr>
				  <tr>
    			    <td>任课教师:</td>
    			    <td>
    				    <input type="text" name="jiaoshi" />
    			    </td>
    		  </tr>
    		  <tr>
    			    <td>任课地点:</td>
    			    <td>
    				    <input type="text" name="didian" />
    			    </td>
    		  </tr>
    		  <tr align="center">
    			    <td colspan="2">
    				    <input type="submit" value="保存" />
    			    </td>
    		  </tr>
		</table>
	</form>
</body>
</html>
4.运行结果截图






5.PSP记录



 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号