此项目做的事一个课程管理系统,需要通过web做一个可以实现课程的增删改查的功能。
需要用到数据库,Servlet和jsp等(第一次使用Servlet和数据库连接,所以代码都比较低级,页面也比较粗糙,还没有实现Servlet处理后数据的回传,还未实现模糊查询)
程序所建的项目如下:
数据表的格式:
1.首先建立数据库链接
course/src/com.jdbc.util/BaseConnection.java
代码如下:
1 packagecom.jdbc.util;2
3
4 importjava.sql.Connection;5 importjava.sql.DriverManager;6
7 public classBaseConnection {8
9 public static Connection getConnection(){//用这个方法获取mysql的连接
10 Connection conn=null;11 String driver = "com.mysql.jdbc.Driver";12 String url = "jdbc:mysql://localhost:3306/sql?characterEncoding=utf8&useSSL=true";13 String user = "root";14 String password = "";//此处填写数据库连接密码15 try{16 Class.forName(driver);//加载驱动类
17 conn=DriverManager.18 getConnection(url,user,password);//(url数据库的IP地址,user数据库用户名,password数据库密码)
19 }catch(Exception e){20 e.printStackTrace();21 }22 returnconn;23 }24
25 public static voidmain(String[] args) {26 System.out.println("连接成功");27 }28 }
利用javabean建立一个课程类:
course/src/com.jdbc.bean/Course:
代码如下:
1 packagecom.jdbc.bean;2
3 public classCourse {4
5 privateString classname;6 privateString teacher;7 privateString place;8
9 publicString getClassname() {10 returnclassname;11 }12 public voidsetClassname(String classname) {13 this.classname =classname;14 }15 publicString getTeacher() {16 returnteacher;17 }18 public voidsetTeacher(String teacher) {19 this.teacher =teacher;20 }21 publicString getPlace() {22 returnplace;23 }24 public voidsetPlace(String place) {25 this.place =place;26 }27
28
29
30 }
为了后期操作的方便我将一些增删改查的方法写到了一个类中,把他们封装为一个一个的具体的方法
course/src/com.jdbc.dao/JdbcMain.java
代码如下:
1 packagecom.jdbc.dao;2
3
4 importjava.sql.Connection;5 importjava.sql.PreparedStatement;6 importjava.sql.ResultSet;7 importjava.sql.SQLException;8 importjava.util.Scanner;9
10 importcom.jdbc.bean.Course;11 importcom.jdbc.util.BaseConnection;12
13 public classJdbcMain {14 static Scanner in = newScanner(System.in);15 public static voidmain(String[] args) {16 //TODO 自动生成的方法存根
17
18
19 }20
21
22 public static intadd(Course cour)23 {24 Connection conn=BaseConnection.getConnection();25
26 String sql = "insert into course values(?,?,?)";27
28 int b = 0;29 PreparedStatement ps=null;30 try{31
32 ps= conn.prepareStatement(sql);//把写好的sql语句传递到数据库,让数据库知道我们要干什么
33
34 ps.setString(1,cour.getClassname());35
36 ps.setString(2,cour.getTeacher());37
38 ps.setString(3, cour.getPlace());39
40 int a=ps.executeUpdate();//这个方法用于改变数据库数据,a代表改变数据库的条数
41 if(a>0){42 b++;43 System.out.println("添加成功");44
45 }else{46 System.out.println("添加失败");47
48 }49 }catch(Exception e){50 e.printStackTrace();51 }try{52 if(ps!=null){53 ps.close();54 }if(conn!=null){55 conn.close();56 }57 }catch(Exception e2){58 e2.printStackTrace();59 }60
61 returnb;62 }63
64
65
66 public static intupdate(Course cour )67 {68 int b = 0;69
70 Connection conn=BaseConnection.getConnection();71 PreparedStatement ps=null;72 String sql="update course set place=?,teacher=? where class=?";73 try{74 ps=conn.prepareStatement(sql);75
76 ps.setString(1,cour.getPlace());77 ps.setString(2,cour.getTeacher());78 ps.setString(3,cour.getClassname());79 int a=ps.executeUpdate();80 if(a>0){81 b++;82 System.out.println("修改成功");83 }else{84 System.out.println("修改失败");85 }86 }catch(Exception e){87 e.printStackTrace();88 }finally{89 try{90 if(ps!=null){91 ps.close();92 }if(conn!=null){93 conn.close();94 }95 }catch(Exception e2){96 e2.printStackTrace();97 }98 }99
100
101 returnb;102 }103
104
105 public static intdelete(String classname)106
107 {108 int b = 0;109 Connection conn=BaseConnection.getConnection();110 PreparedStatement ps=null;111 String sql="delete from course where class =?";112
113 try{114 ps=conn.prepareStatement(sql);115 ps.setString(1, classname);116 int a=ps.executeUpdate();117 if(a>0){118 b++;119 System.out.println("删除成功");120 }else{121 System.out.println("删除失败");122 }123 }catch(Exception e){124 e.printStackTrace();125 }finally{126 try{127 if(ps!=null){128 ps.close();129 }if(conn!=null){130 conn.close();131 }132 }catch(Exception e2){133 e2.printStackTrace();134 }135 }136 returnb;137 }138
139 public staticCourse find(String s)140 {141 Connection conn=BaseConnection.getConnection();142 PreparedStatement ps=null;143
144 ResultSet rs = null;145
146 Course cour = newCourse();147
148 String sql="select * from course where class =?";149
150 try{151 ps=conn.prepareStatement(sql);152
153 ps.setString(1, s);154 rs=ps.executeQuery();155 if(rs.next()){156 cour.setClassname(rs.getString("class"));157 cour.setTeacher(rs.getString("teacher"));158 cour.setPlace(rs.getString("place"));159
160 }161
162
163
164 } catch(SQLException e) {165 //TODO 自动生成的 catch 块
166 e.printStackTrace();167 } finally{168 try{169 if(ps!=null){170 ps.close();171 }if(conn!=null){172 conn.close();173 }174 if(rs!=null)175 {176 rs.close();177 }178 }catch(Exception e2){179 e2.printStackTrace();180 }181 }182
183 returncour;184 }185
186
187
188 }
下面建立主界面:
主界面主要就是在界面中介入了多个链接,通过对链接的点击,进行页面的跳转,实现不同的操作。
路径/course/WebContent/admin/main.jsp
代码如下:
1
2
3
4
5
6
7
主页面8
9
10
11 刷新页面
12 增加课程
13 删除课程
14 修改课程
15 查询课程
16 显示全部课程
17
18
19
20
课程添加页面:
路径/course/WebContent/admin/add.jsp
代码如下:
1
2
3
4
5
6
Insert title here7
8
9
10
11 课程名称:
12 任课教师:
13 上课地点:
14
15
16
17
18
删除页面:主要操作就是通过课程名称找到课程位置,输出一下他的具体信息并将其删除
路径/course/WebContent/admin/delete.jsp
代码如下:
1
2
3
4
5
6
删除界面7
8
9
10
11
12 输入您要删除的课程:
13
14
15
16
17
修改页面:通过课程名称进行搜索,并对课程信息进行修改,现在还存在的问题是都是通过课程名称找到的还能修改课程名称。
路径/course/WebContent/admin/update.jsp
代码如下:
修改课程信息课程名称:任课教师:上课地点:查找界面:现在只实现了通过课程名称查找,还没有实现模糊查询
路径/course/WebContent/admin/find.jsp
代码如下:
查找课程名称:显示所有页面:输出数据库中的全部数据
路径/course/WebContent/admin/show.jsp
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
显示全部15
16
17
18
19
20 Connection conn=BaseConnection.getConnection();21 PreparedStatement ps=null;22 ResultSet rs = null;23 String sql = "select * from course";24 try{25 ps=conn.prepareStatement(sql);26 rs=ps.executeQuery();//执行数据库查询的方法,放到rs中
27
28
29 String classname = null;30 String teacher = null;31 String place = null;32 while(rs.next()){33
34 classname = rs.getString("class");35
36 teacher = rs.getString("teacher");37 place = rs.getString("place");38
39 //输出结果
40 out.println(classname + "\t" + teacher + '\t' + place + "");41 }42
43 } catch(SQLException e) {44 //TODO 自动生成的 catch 块
45 e.printStackTrace();46 }finally{47 try{48 if(ps!=null){49 ps.close();50 }if(conn!=null){51 conn.close();52 }if(rs!=null)53 {54 rs.close();55 }56 }catch(Exception e2){57 e2.printStackTrace();58 }59 }60
61
62
63
64
65
66 %>
67
68
69
70
根据界面出入的数据,都将其传入Servlet中然后对其进行处理,由于不会使用数据的回传,无法通过页面的形式给出提示信息,所以就用java的提示框进行对结果的提示了
Servlet路径/course/src/servelet/Manage.java
代码如下:
1 packageservelet;2
3 importjava.io.IOException;4 importjava.io.UnsupportedEncodingException;5 importjava.sql.Connection;6 importjava.sql.PreparedStatement;7 importjava.sql.ResultSet;8 importjava.sql.SQLException;9 importjava.sql.Statement;10
11 importjavax.servlet.ServletException;12 importjavax.servlet.annotation.WebServlet;13 importjavax.servlet.http.HttpServlet;14 importjavax.servlet.http.HttpServletRequest;15 importjavax.servlet.http.HttpServletResponse;16 importjavax.swing.JOptionPane;17 importjavax.swing.plaf.metal.MetalIconFactory.PaletteCloseIcon;18
19 importcom.jdbc.bean.Course;20 importcom.jdbc.dao.JdbcMain;21 importcom.jdbc.util.BaseConnection;22
23 /**
24 * Servlet implementation class Manage25 */
26 @WebServlet("/Manage")27 public class Manage extendsHttpServlet {28 private static final long serialVersionUID = 1L;29
30 /**
31 *@seeHttpServlet#HttpServlet()32 */
33 publicManage() {34 super();35 //TODO Auto-generated constructor stub
36 }37
38 /**
39 *@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)40 */
41 protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {42 //TODO Auto-generated method stub
43 response.getWriter().append("Served at: ").append(request.getContextPath());44
45 request.setCharacterEncoding("UTF-8");46 String method = request.getParameter("method");47
48
49 if("add".equals(method)) //添加课程
50 {51
52
53 try{54 add(request,response);55 } catch(SQLException e) {56 //TODO 自动生成的 catch 块
57 e.printStackTrace();58 }59
60 }else if("delete".equals(method)) //通过课程名称查找并删除对应的课程(必须是具体的课程名称,否则就显示未找到该课程,也就无法删除)
61 {62 delete(request,response);63 }else
64
65 if("find".equals(method)) //查找课程信息
66 {67 find(request,response);68 }else
69
70 if("update".equals(method)) //通过课程名称进行查找,并对其进行修改(由于只能通过课程查找)
71 {72 update(request,response);73 }74
75 }76
77
78
79
80 private voidupdate(HttpServletRequest request, HttpServletResponse response) {81 //TODO 自动生成的方法存根
82 Course cour = newCourse();83
84 String name = request.getParameter("class");85 String teacher = request.getParameter("teacher");86 String place = request.getParameter("place");87
88 cour.setClassname(name);89 cour.setTeacher(teacher);90 cour.setPlace(place);91 String teachers = "王建民刘立嘉刘丹王辉杨子光";92 String places = "一教二教三教基教";93 String pl = place.substring(0, 2);94
95 if(teachers.indexOf(teacher) != -1)96 {97 if(places.indexOf(pl) != -1)98 {99 int res=JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), "提示","是否进行修改",JOptionPane.YES_NO_OPTION);100 if(res==JOptionPane.YES_OPTION)101 {102
103 if (JdbcMain.update(cour)==1) {104
105 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "成功修改", "操作成功" +name, JOptionPane.INFORMATION_MESSAGE);106 response.setHeader("refresh", "0;url=admin/main.jsp"); //点击“是”后执行这个代码块
107 return;108 }else{109 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "操作错误", "请重新操作", JOptionPane.ERROR_MESSAGE);110 response.setHeader("refresh", "0;url=admin/update.jsp");111 return;112 }113 }else
114 {115 response.setHeader("refresh", "0;url=admin/main.jsp"); //点击“否”后执行这个代码块
116 return;117 }118 }else
119 {120 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "上课地点错误", "操作错误", JOptionPane.ERROR_MESSAGE);121 response.setHeader("refresh", "0;url=admin/update.jsp");122 return;123 }124 }else{125 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),"没有这名教师" ,"操作错误",JOptionPane.ERROR_MESSAGE);126 response.setHeader("refresh", "0;url=admin/update.jsp");127 return;128 }129
130
131 }132
133 private void find(HttpServletRequest request, HttpServletResponse response) throwsUnsupportedEncodingException {134 //TODO 自动生成的方法存根
135 request.setCharacterEncoding("UTF-8");136
137 Course cour = newCourse();138 cour = JdbcMain.find(request.getParameter("class"));139 if (cour.getClassname() == null) {140 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "未找到相应信息", "操作错误", JOptionPane.ERROR_MESSAGE);141 response.setHeader("refresh", "0;url=admin/find.jsp");142 }else{143 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),"您要查找的是" + cour.getClassname() + cour.getTeacher() + cour.getPlace() , "操作成功", JOptionPane.INFORMATION_MESSAGE);144 response.setHeader("refresh", "0;url=admin/main.jsp");145 }146
147
148
149 }150
151 private void delete(HttpServletRequest request, HttpServletResponse response) throwsUnsupportedEncodingException {152 //TODO 自动生成的方法存根
153 request.setCharacterEncoding("UTF-8");154 String classname = request.getParameter("class");155 Course cour = newCourse();156 cour = null;157 cour =JdbcMain.find(classname);158 if(cour == null)159 {160 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "未找到此课程", "操作错误", JOptionPane.ERROR_MESSAGE);161 response.setHeader("refresh", "0;url=admin/delete.jsp");162 return;163 }164
165 int res=JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), "请确认", "确认删除"+ cour.getClassname() + cour.getTeacher() +cour.getPlace(), JOptionPane.YES_NO_OPTION);166 if(res ==JOptionPane.YES_OPTION)167 {168 if(JdbcMain.delete(classname)==1)169 {170 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "操作成功", "成功删除" +cour.getClassname(), JOptionPane.INFORMATION_MESSAGE);171 response.setHeader("refresh", "0;url=admin/main.jsp");172 return;173 }else{174 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "操作错误", "请重新操作", JOptionPane.ERROR_MESSAGE);175 response.setHeader("refresh", "0;url=admin/delete.jsp");176 return;177 }178 }else{179 response.setHeader("refresh", "0;url=admin/main.jsp");180 return;181 }182
183
184
185
186 }187
188
189
190 private void add(HttpServletRequest request, HttpServletResponse response) throwsIOException, SQLException {191 //TODO 自动生成的方法存根
192 request.setCharacterEncoding("UTF-8");193 Course cour = newCourse();194
195 String classname = request.getParameter("class");196 String teacher = request.getParameter("teacher");197 String place = request.getParameter("place");198
199 cour.setClassname(classname);200 cour.setTeacher(teacher);201 cour.setPlace(place);202
203
204 Connection con =BaseConnection.getConnection();205 PreparedStatement ps = null;206 ResultSet rs = null;207 String sql = "select * from course";208
209 try{210 ps=con.prepareStatement(sql);211 rs=ps.executeQuery();212 while(rs.next()){213 if(classname.equals(rs.getString("classname")))214 {215
216 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "课程名称重复", "操作错误", JOptionPane.ERROR_MESSAGE);217 response.setHeader("refresh", "0;url=admin/add.jsp");218
219 return;220
221 }222
223
224 }225
226 } catch(SQLException e) {227 //TODO 自动生成的 catch 块
228 e.printStackTrace();229 }finally{230 try{231 if(ps!=null){232 ps.close();233 }if(con!=null){234 con.close();235 }if(rs!=null)236 {237 rs.close();238 }239 }catch(Exception e2){240 e2.printStackTrace();241 }242 }243
244
245 String teachers = "王建民刘立嘉刘丹王辉杨子光";246 String places = "一教二教三教基教";247 String pl = place.substring(0, 2);248
249 if(teachers.indexOf(teacher) != -1)250 {251 if(places.indexOf(pl) != -1)252 {253 int res=JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), "您要添加的是:" + classname + teacher + place , "是否继续", JOptionPane.YES_NO_OPTION);254 if(res==JOptionPane.YES_OPTION){255 if (JdbcMain.add(cour) == 1) {256
257 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "添加成功", "操作成功" +cour.getClassname(), JOptionPane.INFORMATION_MESSAGE);258 response.setHeader("refresh", "0;url=admin/main.jsp");259 return;260 }else
261 {262 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "请重新操作", "操作错误", JOptionPane.ERROR_MESSAGE);263 response.setHeader("refresh", "0;url=admin/add.jsp");264 }265 //点击“是”后执行这个代码块
266 }else{267 System.out.println("选择否后执行的代码"); //点击“否”后执行这个代码块
268 return;269 }270
271
272 }else
273 {274 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "上课地点错误", "操作错误", JOptionPane.ERROR_MESSAGE);275 response.setHeader("refresh", "0;url=admin/add.jsp");276 return;277 }278 }else
279 {280 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),"没有这名教师" ,"操作错误",JOptionPane.ERROR_MESSAGE);281 response.setHeader("refresh", "0;url=admin/add.jsp");282 return;283 }284 }285
286 /**
287 *@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)288 */
289 protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {290 //TODO Auto-generated method stub
291 doGet(request, response);292 }293
294 }