zoukankan      html  css  js  c++  java
  • 课堂练习-增加信息

    1、练习设计思想

    编web应用有两种,一种纯JSP,一种是JSP+JavaBean,由于对后者了解不深,这道题先使用JSP,后者方法在以后的博客中实现。
    先使用jsp制作课程添加web页面,使用request内置命令获得客户端提交的HTTP协议数据,getParameter(String name)获得URL中的第一个name参数对应的值,setAttribute(String key,object value)设置map映射中键key对应的值对象value,在jsp读取时判断课程名称,任课 教师,上课地点是否符合要求,不符合要求时,输出信息,并调转返回,否则,添加course;需要建立course类,包含get,set函数;需要建立ICourseDao的接口,用于增加课程;需要调用补充接口,sql创建语句传输对象,preparedStatement接收结果集;在Util中创建DBUtil创建连接对象connection,与数据库连接,并创建CourseException.java文件继承RuntimeException,用于处理异常信息。创建数据库时在命令行输入create database name;建立名为“name”的数据库,(也可以直接在Navicat Premium(数据库管理工具)中建立)点开数据库,输入“Ctrl q”,进入编辑框,输入命令,表建立成功。
    create table t_user(
       id int(10) primary key auto_increment,
           username varchar(255),
           password varchar(255),
           nickname varchar(255),
           type int(2),
           status int(2)
    //仅是个范例,与本题建立数据库无关。
    );

    2、源程序代码

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>增加信息</title>
     8 </head>
     9 <body>
    10 <%=request.getAttribute("error") %>
    11     <form action="add.jsp" method="get">
    12         <table align="center" border="1" width="500">
    13             <tr>
    14                 <td>课程名称 : </td>
    15                 <td>
    16                     <input type="text" name="coursename" />
    17                 </td>
    18             </tr>
    19                 <tr>
    20                 <td>任课教师:</td>
    21                 <td>
    22                     <input type="text" name="teacher" />
    23                 </td>
    24             </tr>
    25             <tr>
    26                 <td>上课地点:</td>
    27                 <td>
    28                     <input type="text" name="place" />
    29                 </td>
    30             </tr>
    31             <tr align="center">
    32                 <td colspan="2">
    33                     <input type="submit" value="保存" />
    34                 </td>
    35             </tr>
    36         </table>
    37     </form>
    38 </body>
    39 </html>
    addInput.jsp
     1 <%@page import="com.jaovo1.msg.model.Course" %>
     2 <%@page import="com.jaovo1.msg.dao.*" %>
     3 <%@page import="com.jaovo1.msg.Util.DBUtil" %>
     4 <%@page import="com.jaovo1.msg.Util.CourseException" %>
     5 <%@ page language="java" contentType="text/html; charset=UTF-8"
     6     pageEncoding="UTF-8"%>
     7 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     8 <html>
     9 <%
    10 String coursename=request.getParameter("coursename");
    11 String teacher=request.getParameter("teacher");
    12 String place=request.getParameter("place");
    13 if(coursename==null||"".equals(coursename.trim())){
    14     request.setAttribute("error","请输入课程名称");
    15     %>
    16     <jsp:forward page="addInput.jsp"></jsp:forward>
    17 <%
    18 }
    19 if((!teacher.equals("王建民")&&!teacher.equals("刘立嘉")&&!teacher.equals("刘丹")&&!teacher.equals("王辉")&&!teacher.equals("杨子光"))&&(!place.startsWith("一教")&&!place.startsWith("二教")&&!place.startsWith("三教")&&!place.startsWith("基教"))){
    20     request.setAttribute("error", "上课地点、任课老师错误");
    21     %>
    22     <jsp:forward page="addInput.jsp"></jsp:forward>
    23 <%
    24 }
    25 if(!teacher.equals("王建民")&&!teacher.equals("刘立嘉")&&!teacher.equals("刘丹")&&!teacher.equals("王辉")&&!teacher.equals("杨子光")){
    26     request.setAttribute("error", "任课老师错误");
    27     %>
    28     <jsp:forward page="addInput.jsp"></jsp:forward>
    29     <%
    30 }
    31 if(!place.startsWith("一教")&&!place.startsWith("二教")&&!place.startsWith("三教")&&!place.startsWith("基教")){
    32     request.setAttribute("error", "上课地点错误");
    33 %>
    34     <jsp:forward page="addInput.jsp"></jsp:forward>
    35 <%
    36 }
    37 Course course=new Course();
    38 course.setCoursename(coursename);
    39 course.setTeacher(teacher);
    40 course.setPlace(place);
    41 CourseImpl courseDao=new CourseImpl();
    42 try{
    43     courseDao.add(course);
    44 %>
    45 <body>
    46 课程保存成功!!<br>
    47 <a href="addInput.jsp">继续添加</a>
    48 </body>
    49 
    50 <%
    51 }catch(CourseException e){
    52 %>
    53 <h2 style="color:red ; font-size:50px">发生错误 <%=e.getMessage() %></h2>
    54 <%
    55 } 
    56 %>
    57 </html>
    add.jsp
     1 package com.jaovo1.msg.model;
     2 public class Course {
     3 private String coursename;
     4 private String teacher;
     5 private String place;
     6 public String getCoursename() {
     7     return coursename;
     8 }
     9 public void setCoursename(String coursename) {
    10     this.coursename = coursename;
    11 }
    12 public String getTeacher() {
    13     return teacher;
    14 }
    15 public void setTeacher(String teacher) {
    16     this.teacher = teacher;
    17 }
    18 public String getPlace() {
    19     return place;
    20 }
    21 public void setPlace(String place) {
    22     this.place = place;
    23 }
    24 
    25 }
    Course.java
    1 package com.jaovo1.msg.dao;
    2 import com.jaovo1.msg.model.Course;
    3 public interface ICourseDao {
    4     public void add(Course course);
    5 
    6 }
    ICourseDao.java
     1 package com.jaovo1.msg.dao;
     2 import java.sql.Connection;
     3 import java.sql.PreparedStatement;
     4 import java.sql.ResultSet;
     5 import java.sql.SQLException;
     6 
     7 import com.jaovo1.msg.Util.CourseException;
     8 import com.jaovo1.msg.Util.DBUtil;
     9 import com.jaovo1.msg.model.Course;
    10 import sun.net.www.content.text.plain;
    11 public class CourseImpl implements ICourseDao{
    12 
    13     @Override
    14     public void add(Course course) {
    15         Connection connection=DBUtil.getConnection();
    16         String sql="select count(*)from t_user where coursename=?";
    17         //创建语句传输对象
    18         PreparedStatement preparedStatement=null;
    19         ResultSet resultSet=null;
    20         try {
    21             preparedStatement=(PreparedStatement) connection.prepareStatement(sql);
    22             preparedStatement.setString(1, course.getCoursename());
    23             //接收结果集
    24             resultSet=preparedStatement.executeQuery();
    25             while(resultSet.next()) {
    26                 if(resultSet.getInt(1)>0) {
    27                     throw new CourseException("课程名已存在");
    28                 }
    29             }
    30             sql="insert into t_user(coursename,teacher,place) value(?,?,?)";
    31             preparedStatement = connection.prepareStatement(sql);
    32             preparedStatement.setString(1, course.getCoursename());
    33             preparedStatement.setString(2, course.getTeacher());
    34             preparedStatement.setString(3, course.getPlace());
    35             preparedStatement.executeUpdate();
    36         } catch (SQLException e) {
    37             // TODO Auto-generated catch block
    38             e.printStackTrace();
    39         }finally {
    40             DBUtil.close(resultSet);
    41             DBUtil.close(connection);
    42             DBUtil.close(preparedStatement);
    43         }
    44         
    45     }
    46 
    47 }
    CourseImpl.java
     1 package com.jaovo1.msg.Util;
     2 
     3 public class CourseException extends RuntimeException{
     4 
     5     public CourseException() {
     6         super();
     7         // TODO Auto-generated constructor stub
     8     }
     9 
    10     public CourseException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
    11         super(message, cause, enableSuppression, writableStackTrace);
    12         // TODO Auto-generated constructor stub
    13     }
    14 
    15     public CourseException(String message, Throwable cause) {
    16         super(message, cause);
    17         // TODO Auto-generated constructor stub
    18     }
    19 
    20     public CourseException(String message) {
    21         super(message);
    22         // TODO Auto-generated constructor stub
    23     }
    24 
    25     public CourseException(Throwable cause) {
    26         super(cause);
    27         // TODO Auto-generated constructor stub
    28     }
    29 
    30 }
    CourseException.java
     1 package com.jaovo1.msg.Util;
     2 
     3 import java.sql.DriverManager;
     4 import java.sql.PreparedStatement;
     5 import java.sql.ResultSet;
     6 import java.sql.SQLException;
     7 
     8 import com.mysql.jdbc.Connection;
     9 
    10 public class DBUtil {
    11     public static Connection getConnection() {
    12             //1加载驱动
    13             try {
    14                 Class.forName("com.mysql.jdbc.Driver").newInstance();
    15             } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
    16                 // TODO Auto-generated catch block
    17                 e.printStackTrace();
    18             }
    19         String user ="root";
    20         String password="root";
    21         String url="jdbc:mysql://localhost:3306/javo_msg";
    22         //test
    23         Connection connection=null;
    24         try {
    25             //2创建连接对象connection
    26             connection=(Connection) DriverManager.getConnection(url, user, password);
    27         } catch (SQLException e) {
    28             // TODO Auto-generated catch block
    29             e.printStackTrace();
    30         }
    31         return connection;
    32         }
    33     //关闭资源方法
    34     public static void close(java.sql.Connection connection) {
    35         try {
    36             if(connection!=null)
    37             {
    38             connection.close();
    39             }
    40         } catch (SQLException e) {
    41             // TODO Auto-generated catch block
    42             e.printStackTrace();
    43         }
    44     }
    45     public static void close(PreparedStatement preparedStatement) {
    46         try
    47         {if(preparedStatement!=null)
    48         {
    49             preparedStatement.close();
    50         }
    51         }catch(SQLException e)
    52         {
    53             e.printStackTrace();
    54         }
    55     }
    56     public static void close(ResultSet resultSet) {
    57         try
    58         {if(resultSet!=null)
    59         {
    60             resultSet.close();
    61         }
    62         }catch(SQLException e)
    63         {
    64             e.printStackTrace();
    65         }
    66     }
    67     
    68 
    69 }
    DBUtil.java

    3、运行结果截图

    (输错后报错,页面将跳到重新输入的空白格里,为了显示错误结果,截图使两者同框)

    4、按照PSP0级的要求记录开发过程中的项目计划日志、时间记录日志、缺陷记录日志

     

    5、总结

    目前调试程序,易出现404,500,空指针异常,jsp异常,乱码等问题,大多数情况下由于自己编写代码粗心,而且这种错误难找,因此,尽量少犯下这些错误,在今后学习中学会总结各种错误的原因。本程序存在一些细节性问题,判断语句在jsp中写,安全性降低,在后来学习中,学会将判断打包,增强安全性。学会总结,化为自己的东西,一切不要着急,慢慢来,bug慢慢改,大不了重修呗,你又不是没勇气。软工之路漫漫长道,扎实走好每一步,急于求成,反而不进。相信自己,学计算机的孩子不认输。

  • 相关阅读:
    使用 SVC 修改代码
    USB device classes
    QUEUE Implement a first in, first out linked list
    Delphi Memory 函数
    ARM CortexM 分支指令编码
    W25Q16 driver
    TStringList.SaveToStream TStringStream.SaveToStream
    CreateFile, DeviceIoControl, ReadFile, WriteFile, CancelIo, CloseHandle, GetOverlappedResult
    CortexM3 / M4 SVC Handler
    move to www.csdn.net
  • 原文地址:https://www.cnblogs.com/watm/p/7911300.html
Copyright © 2011-2022 走看看