內容目錄:javascript
1、軟件安裝教程html
2、擡頭看路:前輩們的經驗前端
3、最近的一個程序展現java
4、近期學習總結與體會mysql
第一大步驟:軟件安裝教程;web
1.eclipse安裝sql
http://www.javashuo.com/article/p-sygpkwpa-ba.html數據庫
2.tomcat安裝瀏覽器
https://blog.csdn.net/u014543872/article/details/79568712tomcat
3.數據庫安裝
http://www.cnblogs.com/sshoub/p/4321640.html
4.Sqlyang破解版下載
http://www.onlinedown.net/soft/24926.htm
第二大步驟:擡頭看路
1.如何利用eclipse建立一個java web項目?
https://blog.csdn.net/qq_25646191/article/details/78776136
2.根據教程實現一個完整的javaweb項目
http://www.javashuo.com/article/p-ohlvqizu-z.html
3.javaweb學習路線
http://www.javashuo.com/article/p-rsmxjdxw-y.html
http://www.javashuo.com/article/p-hjwczcjg-a.html
Javaweb學習總結
http://www.cnblogs.com/xdp-gacl/p/3729033.html
Java Web項目開發到底須要掌握哪些技術?
http://www.javashuo.com/article/p-fteosyue-bp.html
零基礎如何系統學習Java Web?
https://www.zhihu.com/question/31151832
安利代碼:
1 package com.hjf.dao; 2 3 import java.sql.Connection; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 import java.sql.Statement; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import com.hjf.entity.Course; 11 import com.hjf.util.DBUtil; 12 13 /** 14 * 課程Dao 15 * Dao層操做數據 16 * @author Hu 17 * 18 */ 19 public class CourseDao { 20 21 /** 22 * 添加 23 * @param course 24 * @return 25 */ 26 public boolean add(Course course) { 27 String sql = "insert into course(name, teacher, classroom) values('" + course.getName() + "','" + course.getTeacher() + "','" + course.getClassroom() + "')"; 28 //建立數據庫連接 29 Connection conn = DBUtil.getConn(); 30 Statement state = null; 31 boolean f = false; 32 int a = 0; 33 34 try { 35 state = conn.createStatement(); 36 state.executeUpdate(sql); 37 } catch (Exception e) { 38 e.printStackTrace(); 39 } finally { 40 //關閉鏈接 41 DBUtil.close(state, conn); 42 } 43 44 if (a > 0) { 45 f = true; 46 } 47 return f; 48 } 49 50 /** 51 * 刪除 52 * 53 * @param id 54 * @return 55 */ 56 public boolean delete (int id) { 57 boolean f = false; 58 String sql = "delete from course where id='" + id + "'"; 59 60 Connection conn = DBUtil.getConn(); 61 Statement state = null; 62 int a = 0; 63 64 try { 65 state = conn.createStatement(); 66 a = state.executeUpdate(sql); 67 } catch (SQLException e) { 68 e.printStackTrace(); 69 } finally { 70 DBUtil.close(state, conn); 71 } 72 73 if (a > 0) { 74 f = true; 75 } 76 return f; 77 } 78 79 /** 80 * 修改 81 * @param name 82 * @param pass 83 */ 84 public boolean update(Course course) { 85 String sql = "update course set name='" + course.getName() + "', teacher='" + course.getTeacher() + "', classroom='" + course.getClassroom() 86 + "' where id='" + course.getId() + "'"; 87 Connection conn = DBUtil.getConn(); 88 Statement state = null; 89 boolean f = false; 90 int a = 0; 91 92 try { 93 state = conn.createStatement(); 94 a = state.executeUpdate(sql); 95 } catch (SQLException e) { 96 e.printStackTrace(); 97 } finally { 98 DBUtil.close(state, conn); 99 } 100 101 if (a > 0) { 102 f = true; 103 } 104 return f; 105 } 106 107 /** 108 * 驗證課程名稱是否惟一 109 * true --- 不惟一 110 * @param name 111 * @return 112 */ 113 public boolean name(String name) { 114 boolean flag = false; 115 String sql = "select name from course where name = '" + name + "'"; 116 Connection conn = DBUtil.getConn(); 117 Statement state = null; 118 ResultSet rs = null; 119 120 try { 121 state = conn.createStatement(); 122 rs = state.executeQuery(sql); 123 while (rs.next()) { 124 flag = true; 125 } 126 } catch (SQLException e) { 127 e.printStackTrace(); 128 } finally { 129 DBUtil.close(rs, state, conn); 130 } 131 return flag; 132 } 133 134 /** 135 * 經過ID獲得課程信息 136 * @param id 137 * @return 138 */ 139 public Course getCourseById(int id) { 140 String sql = "select * from course where id ='" + id + "'"; 141 Connection conn = DBUtil.getConn(); 142 Statement state = null; 143 ResultSet rs = null; 144 Course course = null; 145 146 try { 147 state = conn.createStatement(); 148 rs = state.executeQuery(sql); 149 while (rs.next()) { 150 String name = rs.getString("name"); 151 String teacher = rs.getString("teacher"); 152 String classroom = rs.getString("classroom"); 153 course = new Course(id, name, teacher, classroom); 154 } 155 } catch (Exception e) { 156 e.printStackTrace(); 157 } finally { 158 DBUtil.close(rs, state, conn); 159 } 160 161 return course; 162 } 163 164 /** 165 * 經過name獲得Course 166 * @param name 167 * @return 168 */ 169 public Course getCourseByName(String name) { 170 String sql = "select * from course where name ='" + name + "'"; 171 Connection conn = DBUtil.getConn(); 172 Statement state = null; 173 ResultSet rs = null; 174 Course course = null; 175 176 try { 177 state = conn.createStatement(); 178 rs = state.executeQuery(sql); 179 while (rs.next()) { 180 int id = rs.getInt("id"); 181 String teacher = rs.getString("teacher"); 182 String classroom = rs.getString("classroom"); 183 course = new Course(id, name, teacher, classroom); 184 } 185 } catch (Exception e) { 186 e.printStackTrace(); 187 } finally { 188 DBUtil.close(rs, state, conn); 189 } 190 191 return course; 192 } 193 194 /** 195 * 查找 196 * @param name 197 * @param teacher 198 * @param classroom 199 * @return 200 */ 201 public List<Course> search(String name, String teacher, String classroom) { 202 String sql = "select * from course where "; 203 if (name != "") { 204 sql += "name like '%" + name + "%'"; 205 } 206 if (teacher != "") { 207 sql += "teacher like '%" + teacher + "%'"; 208 } 209 if (classroom != "") { 210 sql += "classroom like '%" + classroom + "%'"; 211 } 212 List<Course> list = new ArrayList<>(); 213 Connection conn = DBUtil.getConn(); 214 Statement state = null; 215 ResultSet rs = null; 216 217 try { 218 state = conn.createStatement(); 219 rs = state.executeQuery(sql); 220 Course bean = null; 221 while (rs.next()) { 222 int id = rs.getInt("id"); 223 String name2 = rs.getString("name"); 224 String teacher2 = rs.getString("teacher"); 225 String classroom2 = rs.getString("classroom"); 226 bean = new Course(id, name2, teacher2, classroom2); 227 list.add(bean); 228 } 229 } catch (SQLException e) { 230 e.printStackTrace(); 231 } finally { 232 DBUtil.close(rs, state, conn); 233 } 234 235 return list; 236 } 237 238 /** 239 * 所有數據 240 * @param name 241 * @param teacher 242 * @param classroom 243 * @return 244 */ 245 public List<Course> list() { 246 String sql = "select * from course"; 247 List<Course> list = new ArrayList<>(); 248 Connection conn = DBUtil.getConn(); 249 Statement state = null; 250 ResultSet rs = null; 251 252 try { 253 state = conn.createStatement(); 254 rs = state.executeQuery(sql); 255 Course bean = null; 256 while (rs.next()) { 257 int id = rs.getInt("id"); 258 String name2 = rs.getString("name"); 259 String teacher2 = rs.getString("teacher"); 260 String classroom2 = rs.getString("classroom"); 261 bean = new Course(id, name2, teacher2, classroom2); 262 list.add(bean); 263 } 264 } catch (SQLException e) { 265 e.printStackTrace(); 266 } finally { 267 DBUtil.close(rs, state, conn); 268 } 269 270 return list; 271 } 272 273 }
1 package com.hjf.entity; 2 3 public class Course { 4 5 private int id; 6 private String name; 7 private String teacher; 8 private String classroom; 9 10 public int getId() { 11 return id; 12 } 13 public void setId(int id) { 14 this.id = id; 15 } 16 public String getName() { 17 return name; 18 } 19 public void setName(String name) { 20 this.name = name; 21 } 22 public String getTeacher() { 23 return teacher; 24 } 25 public void setTeacher(String teacher) { 26 this.teacher = teacher; 27 } 28 public String getClassroom() { 29 return classroom; 30 } 31 public void setClassroom(String classroom) { 32 this.classroom = classroom; 33 } 34 35 public Course() {} 36 37 public Course(int id, String name, String teacher, String classroom) { 38 this.id = id; 39 this.name = name; 40 this.teacher = teacher; 41 this.classroom = classroom; 42 } 43 44 public Course(String name, String teacher, String classroom) { 45 this.name = name; 46 this.teacher = teacher; 47 this.classroom = classroom; 48 } 49 }
1 package com.hjf.service; 2 3 import java.util.List; 4 5 import com.hjf.dao.CourseDao; 6 import com.hjf.entity.Course; 7 8 /** 9 * CourseService 10 * 服務層 11 * @author Hu 12 * 13 */ 14 public class CourseService { 15 16 CourseDao cDao = new CourseDao(); 17 18 /** 19 * 添加 20 * @param course 21 * @return 22 */ 23 public boolean add(Course course) { 24 boolean f = false; 25 if(!cDao.name(course.getName())) { 26 cDao.add(course); 27 f = true; 28 } 29 return f; 30 } 31 32 /** 33 * 刪除 34 */ 35 public void del(int id) { 36 cDao.delete(id); 37 } 38 39 /** 40 * 修改 41 * @return 42 */ 43 public void update(Course course) { 44 cDao.update(course); 45 } 46 47 /** 48 * 經過ID獲得一個Course 49 * @return 50 */ 51 public Course getCourseById(int id) { 52 return cDao.getCourseById(id); 53 } 54 55 /** 56 * 經過Name獲得一個Course 57 * @return 58 */ 59 public Course getCourseByName(String name) { 60 return cDao.getCourseByName(name); 61 } 62 63 /** 64 * 查找 65 * @return 66 */ 67 public List<Course> search(String name, String teacher, String classroom) { 68 return cDao.search(name, teacher, classroom); 69 } 70 71 /** 72 * 所有數據 73 * @return 74 */ 75 public List<Course> list() { 76 return cDao.list(); 77 } 78 }
1 package com.hjf.servlet; 2 3 import java.io.IOException; 4 import java.util.List; 5 import javax.servlet.ServletException; 6 import javax.servlet.annotation.WebServlet; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 import com.hjf.entity.Course; 12 import com.hjf.service.CourseService; 13 14 @WebServlet("/CourseServlet") 15 public class CourseServlet extends HttpServlet { 16 17 private static final long serialVersionUID = 1L; 18 19 CourseService service = new CourseService(); 20 21 /** 22 * 方法選擇 23 */ 24 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 25 req.setCharacterEncoding("utf-8"); 26 String method = req.getParameter("method"); 27 28 if ("add".equals(method)) { 29 add(req, resp); 30 } else if ("del".equals(method)) { 31 del(req, resp); 32 } else if ("update".equals(method)) { 33 update(req, resp); 34 } else if ("search".equals(method)) { 35 search(req, resp); 36 } else if ("getcoursebyid".equals(method)) { 37 getCourseById(req, resp); 38 } else if ("getcoursebyname".equals(method)) { 39 getCourseByName(req, resp); 40 } else if ("list".equals(method)) { 41 list(req, resp); 42 } 43 } 44 45 /** 46 * 添加 47 * @param req 48 * @param resp 49 * @throws IOException 50 * @throws ServletException 51 */ 52 private void add(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { 53 req.setCharacterEncoding("utf-8"); 54 //獲取數據 55 String name = req.getParameter("name"); 56 String teacher = req.getParameter("teacher"); 57 String classroom = req.getParameter("classroom"); 58 Course course = new Course(name, teacher, classroom); 59 60 //添加後消息顯示 61 if(service.add(course)) { 62 req.setAttribute("message", "添加成功"); 63 req.getRequestDispatcher("add.jsp").forward(req,resp); 64 } else { 65 req.setAttribute("message", "課程名稱重複,請從新錄入"); 66 req.getRequestDispatcher("add.jsp").forward(req,resp); 67 } 68 } 69 70 /** 71 * 所有 72 * @param req 73 * @param resp 74 * @throws ServletException 75 */ 76 private void list(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{ 77 req.setCharacterEncoding("utf-8"); 78 79 List<Course> courses = service.list(); 80 req.setAttribute("courses", courses); 81 req.getRequestDispatcher("list.jsp").forward(req,resp); 82 } 83 84 /** 85 * 經過ID獲得Course 86 * @param req 87 * @param resp 88 * @throws ServletException 89 */ 90 private void getCourseById(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{ 91 req.setCharacterEncoding("utf-8"); 92 int id = Integer.parseInt(req.getParameter("id")); 93 Course course = service.getCourseById(id); 94 req.setAttribute("course", course); 95 req.getRequestDispatcher("detail2.jsp").forward(req,resp); 96 } 97 98 /** 99 * 經過名字查找 100 * 跳轉至刪除 101 * @param req 102 * @param resp 103 * @throws IOException 104 * @throws ServletException 105 */ 106 private void getCourseByName(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{ 107 req.setCharacterEncoding("utf-8"); 108 String name = req.getParameter("name"); 109 Course course = service.getCourseByName(name); 110 if(course == null) { 111 req.setAttribute("message", "查無此課程!"); 112 req.getRequestDispatcher("del.jsp").forward(req,resp); 113 } else { 114 req.setAttribute("course", course); 115 req.getRequestDispatcher("detail.jsp").forward(req,resp); 116 } 117 } 118 119 /** 120 * 刪除 121 * @param req 122 * @param resp 123 * @throws IOException 124 * @throws ServletException 125 */ 126 private void del(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{ 127 req.setCharacterEncoding("utf-8"); 128 int id = Integer.parseInt(req.getParameter("id")); 129 service.del(id); 130 req.setAttribute("message", "刪除成功!"); 131 req.getRequestDispatcher("del.jsp").forward(req,resp); 132 } 133 134 /** 135 * 修改 136 * @param req 137 * @param resp 138 * @throws IOException 139 * @throws ServletException 140 */ 141 private void update(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{ 142 req.setCharacterEncoding("utf-8"); 143 int id = Integer.parseInt(req.getParameter("id")); 144 String name = req.getParameter("name"); 145 String teacher = req.getParameter("teacher"); 146 String classroom = req.getParameter("classroom"); 147 Course course = new Course(id, name, teacher, classroom); 148 149 service.update(course); 150 req.setAttribute("message", "修改爲功"); 151 req.getRequestDispatcher("CourseServlet?method=list").forward(req,resp); 152 } 153 154 /** 155 * 查找 156 * @param req 157 * @param resp 158 * @throws ServletException 159 */ 160 private void search(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{ 161 req.setCharacterEncoding("utf-8"); 162 String name = req.getParameter("name"); 163 String teacher = req.getParameter("teacher"); 164 String classroom = req.getParameter("classroom"); 165 List<Course> courses = service.search(name, teacher, classroom); 166 req.setAttribute("courses", courses); 167 req.getRequestDispatcher("searchlist.jsp").forward(req,resp); 168 } 169 }
1 package com.hjf.util; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.sql.Statement; 9 10 /** 11 * 數據庫鏈接工具 12 * @author Hu 13 * 14 */ 15 public class DBUtil { 16 17 public static String db_url = "jdbc:mysql://localhost:3306/course"; 18 public static String db_user = "root"; 19 public static String db_pass = "root"; 20 21 public static Connection getConn () { 22 Connection conn = null; 23 24 try { 25 Class.forName("com.mysql.jdbc.Driver");//加載驅動 26 conn = DriverManager.getConnection(db_url, db_user, db_pass); 27 } catch (Exception e) { 28 e.printStackTrace(); 29 } 30 31 return conn; 32 } 33 34 /** 35 * 關閉鏈接 36 * @param state 37 * @param conn 38 */ 39 public static void close (Statement state, Connection conn) { 40 if (state != null) { 41 try { 42 state.close(); 43 } catch (SQLException e) { 44 e.printStackTrace(); 45 } 46 } 47 48 if (conn != null) { 49 try { 50 conn.close(); 51 } catch (SQLException e) { 52 e.printStackTrace(); 53 } 54 } 55 } 56 57 public static void close (ResultSet rs, Statement state, Connection conn) { 58 if (rs != null) { 59 try { 60 rs.close(); 61 } catch (SQLException e) { 62 e.printStackTrace(); 63 } 64 } 65 66 if (state != null) { 67 try { 68 state.close(); 69 } catch (SQLException e) { 70 e.printStackTrace(); 71 } 72 } 73 74 if (conn != null) { 75 try { 76 conn.close(); 77 } catch (SQLException e) { 78 e.printStackTrace(); 79 } 80 } 81 } 82 83 public static void main(String[] args) throws SQLException { 84 Connection conn = getConn(); 85 PreparedStatement pstmt = null; 86 ResultSet rs = null; 87 String sql ="select * from course"; 88 pstmt = conn.prepareStatement(sql); 89 rs = pstmt.executeQuery(); 90 if(rs.next()){ 91 System.out.println("空"); 92 }else{ 93 System.out.println("不空"); 94 } 95 } 96 }
add.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <meta charset="UTF-8"> 7 <title>Insert title here</title> 8 9 </head> 10 <body> 11 <% 12 Object message = request.getAttribute("message"); 13 if(message!=null && !"".equals(message)){ 14 15 %> 16 <script type="text/javascript"> 17 alert("<%=request.getAttribute("message")%>"); 18 </script> 19 <%} %> 20 <div align="center"> 21 <h1 style="color: black;">課程信息刪除</h1> 22 <a href="index.jsp">返回主頁</a> 23 <form action="CourseServlet?method=getcoursebyname" method="post" onsubmit="return check()"> 24 <div class="a"> 25 課程名稱<input type="text" id="name" name="name"/> 26 </div> 27 <div class="a"> 28 <button type="submit" class="b">查 找</button> 29 </div> 30 </form> 31 </div> 32 <script type="text/javascript"> 33 function check() { 34 var name = document.getElementById("name");; 35 36 //非空 37 if(name.value == '') { 38 alert('課程名稱爲空'); 39 name.focus(); 40 return false; 41 } 42 } 43 </script> 44 </body> 45 </html>
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <meta charset="UTF-8"> 7 <title>Insert title here</title> 8 <style> 9 .a{ 10 margin-top: 20px; 11 } 12 .b{ 13 font-size: 20px; 14 width: 160px; 15 color: white; 16 background-color: greenyellow; 17 } 18 .tb, td { 19 border: 1px solid black; 20 font-size: 22px; 21 } 22 </style> 23 </head> 24 <body> 25 <div align="center"> 26 <h1 style="color: black;">課程信息刪除</h1> 27 <a href="index.jsp">返回主頁</a> 28 <table class="tb"> 29 <tr> 30 <td>課程名稱</td> 31 <td>${course.name}</td> 32 </tr> 33 <tr> 34 <td>任課教師</td> 35 <td>${course.teacher}</td> 36 </tr> 37 <tr> 38 <td>上課地點</td> 39 <td>${course.classroom}</td> 40 </tr> 41 </table> 42 <div class="a"> 43 <a onclick="return check()" href="CourseServlet?method=del&id=${course.id}">刪 除</a> 44 </div> 45 </div> 46 <script type="text/javascript"> 47 function check() { 48 if (confirm("真的要刪除嗎?")){ 49 return true; 50 }else{ 51 return false; 52 } 53 } 54 </script> 55 </body> 56 </html>
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <meta charset="UTF-8"> 7 <title>Insert title here</title> 8 9 </head> 10 <body> 11 <% 12 Object message = request.getAttribute("message"); 13 if(message!=null && !"".equals(message)){ 14 15 %> 16 <script type="text/javascript"> 17 alert("<%=request.getAttribute("message")%>"); 18 </script> 19 <%} %> 20 <div align="center"> 21 <h1 style="color: black;">課程信息修改</h1> 22 <a href="index.jsp">返回主頁</a> 23 <form action="CourseServlet?method=update" method="post" onsubmit="return check()"> 24 <div class="a"> 25 課程名稱<input type="text" id="name" name="name" value="${course.name}"/> 26 </div> 27 <div class="a"> 28 任課教師<input type="text" id="teacher" name="teacher" value="${course.teacher}"/> 29 </div> 30 <div class="a"> 31 上課地點<input type="text" id="classroom" name="classroom" value="${course.classroom}"/> 32 </div> 33 <input type="hidden" id="id" name="id" value="${course.id}"/> 34 <div class="a"> 35 <button type="submit" class="b">修 改</button> 36 </div> 37 </form> 38 </div> 39 <script type="text/javascript"> 40 function check() { 41 var name = document.getElementById("name");; 42 var teacher = document.getElementById("teacher"); 43 var classroom = document.getElementById("classroom"); 44 45 //非空 46 if(name.value == '') { 47 alert('課程名稱爲空'); 48 name.focus(); 49 return false; 50 } 51 if(teacher.value == '') { 52 alert('教師爲空'); 53 teacher.focus(); 54 return false; 55 } 56 if(classroom.value == '') { 57 alert('上課地點爲空'); 58 classroom.focus(); 59 return false; 60 } 61 62 //教師 63 if(teacher.value != '王建民' && teacher.value != '王輝' && teacher.value != '劉丹' && teacher.value != '劉立嘉' && teacher.value != '楊子光'){ 64 alert('教師名稱錯誤'); 65 return false; 66 } 67 68 //教室: 69 if(!/^基教/.test(classroom.value) && !/^一教/.test(classroom.value) && !/^二教/.test(classroom.value) && !/^三教/.test(classroom.value)) { 70 alert('上課地點錯誤'); 71 return false; 72 } 73 } 74 </script> 75 </body> 76 </html>
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <meta charset="UTF-8"> 7 <title>首頁</title> 8 9 </head> 10 <body> 11 <div align="center"> 12 13 <div class="a"> 14 <a href="add.jsp">課程信息添加</a> 15 </div> 16 <div class="a"> 17 <a href="CourseServlet?method=list">課程信息修改</a> 18 </div> 19 <div class="a"> 20 <a href="del.jsp">課程信息刪除</a> 21 </div> 22 <div class="a"> 23 <a href="search.jsp">課程信息查詢</a> 24 </div> 25 </div> 26 </body> 27 </html>
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 <!DOCTYPE html> 5 <html> 6 <head> 7 <meta charset="UTF-8"> 8 <title>Insert title here</title> 9 10 </head> 11 <body> 12 <% 13 Object message = request.getAttribute("message"); 14 if(message!=null && !"".equals(message)){ 15 16 %> 17 <script type="text/javascript"> 18 alert("<%=request.getAttribute("message")%>"); 19 </script> 20 <%} %> 21 <div align="center"> 22 <h1 style="color: black;">課程信息列表</h1> 23 <a href="index.jsp">返回主頁</a> 24 <table class="tb"> 25 <tr> 26 <td>id</td> 27 <td>課程名稱</td> 28 <td>任課教師</td> 29 <td>上課地點</td> 30 <td align="center" colspan="2">操做</td> 31 </tr> 32 <c:forEach items="${courses}" var="item"> 33 <tr> 34 <td>${item.id}</td> 35 <td>${item.name}</td> 36 <td>${item.teacher}</td> 37 <td>${item.classroom}</td> 38 <td><a href="CourseServlet?method=getcoursebyid&id=${item.id}">修改</a></td> 39 </tr> 40 </c:forEach> 41 </table> 42 </div> 43 </body> 44 </html>
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <meta charset="UTF-8"> 7 <title>Insert title here</title> 8 9 </head> 10 <body> 11 <div align="center"> 12 <h1 style="color: black;">課程信息查詢</h1> 13 <a href="index.jsp">返回主頁</a> 14 <form action="CourseServlet?method=search" method="post" onsubmit="return check()"> 15 <div class="a"> 16 課程名稱<input type="text" id="name" name="name"/> 17 </div> 18 <div class="a"> 19 任課教師<input type="text" id="teacher" name="teacher" /> 20 </div> 21 <div class="a"> 22 上課地點<input type="text" id="classroom" name="classroom" /> 23 </div> 24 <div class="a"> 25 <button type="submit" class="b">查 詢</button> 26 </div> 27 </form> 28 </div> 29 <script type="text/javascript"> 30 function check() { 31 var name = document.getElementById("name");; 32 var teacher = document.getElementById("teacher"); 33 var classroom = document.getElementById("classroom"); 34 35 //非空 36 if(name.value == '' && teacher.value == '' && classroom.value == '') { 37 alert('請填寫一個條件'); 38 return false; 39 } 40 } 41 </script> 42 </body> 43 </html>
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 <!DOCTYPE html> 5 <html> 6 <head> 7 <meta charset="UTF-8"> 8 <title>Insert title here</title> 9 10 </head> 11 <body> 12 <div align="center"> 13 <h1 style="color: black;">課程信息列表</h1> 14 <a href="index.jsp">返回主頁</a> 15 <table class="tb"> 16 <tr> 17 <td>id</td> 18 <td>課程名稱</td> 19 <td>任課教師</td> 20 <td>上課地點</td> 21 </tr> 22 <!-- forEach遍歷出adminBeans --> 23 <c:forEach items="${courses}" var="item" varStatus="status"> 24 <tr> 25 <td>${item.id}</td> 26 <td><a>${item.name}</a></td> 27 <td>${item.teacher}</td> 28 <td>${item.classroom}</td> 29 </tr> 30 </c:forEach> 31 </table> 32 </div> 33 </body> 34 </html>
導入jar包(問度娘):
效果展現:
第三步驟:我最近的學習感覺+一個程序詳解+知識點
模塊一:
I.簡介JavaWEB程序
JavaWeb項目就是一個應用程序,你不要覺得它有多麼神祕。你天天打開的QQ就一個應用程序,你在手機上打開的微信,百度地圖等等,這些都是應用程序。
不一樣的是,QQ是一個本地客戶端程序,它須要你在本身的電腦上安裝一個客戶端,而後你打開QQ,能夠登陸,聊天。
QQ確定也分客戶端和服務端,咱們電腦上裝的就是客戶端,你要知道的一點是,咱們發送消息,發送到哪裏去了呢?
沒錯,確定是發送到QQ的服務器上了,那裏保存着咱們的全部數據。
想一想也不可能在本地,由於咱們在電腦上發送的消息,在手機QQ上不是也能看到嗎?這就說明,確定是上傳到它的服務器而後保存下來了。
而Web項目是什麼呢?
它也是一個應用程序,只不過它的客戶端是運行在瀏覽器上的。
咱們打開瀏覽器,訪問一個地址,好比 http://www.jianshu.com/
這個就是咱們的訪問路徑,咱們經過這個URL向簡書的服務器提交請求,而後服務器進行處理,給你迴應。
接下來,咱們就看到出來一個網頁。
咱們在這個網頁上能夠寫文章,點贊,收藏,等等。
咱們的每一步操做,其實都和服務器作了一個交互。
好比一個登陸功能,當咱們鼠標點擊那個登陸按鈕,瀏覽器就向服務器提交了一個請求,服務器進行處理,而後操做數據庫。最終,它會得出一個結果,就是說,到底能不能讓你登陸,總會有個說法。
若是你密碼寫錯了,它可能就會得出一個用戶名或密碼錯誤的結論。而後,這個信息會從服務器返回到前臺,前臺就是瀏覽器。
所謂的前臺就是你的瀏覽器,沒什麼神祕的。
前臺接受到後臺傳過來的信息後,進行一些處理,而後給你個提示,好比,告訴你用戶名或密碼錯誤。
這就是一個完整的交互過程。
如今隨着網速愈來愈好,瀏覽器的性能愈來愈強大,我想web確定是將來的大趨勢。畢竟,誰都不但願在電腦上安裝一大堆客戶端吧。
只用一個瀏覽器多好。
有了web,我只須要有一個瀏覽器,而後就能經過互聯網獲取我想要的資源了。這樣不是很美妙嗎?
II.不建議一開始就看視頻,先把那些基礎理論知識過一次,內心有點踏實了,到了須要敲大量代碼的階段再看視頻。
模塊三:知識點
javaweb製做流程的形象理解
1.有關數據庫的知識點:
【MYSQL的概述】
數據庫就是一個文件系統,須要經過標準SQL語句才能訪問.
【MYSQL的安裝和卸載】
安裝和卸載的過程記錄下服務器安裝的路徑和數據文件存放的路徑.卸載的時候將這個兩個路徑下的文件一併都刪除掉.
【建立數據庫】
語法:
* create database 數據庫名;
【查看數據庫】
* 查看數據庫服務器中的全部的數據庫:show databases;
【刪除數據庫】
* drop database 數據庫名稱;
【修改數據庫】
* alter database 數據庫名
【其餘的數據庫操做命令】
* 切換數據庫:use 數據庫名;
* 查看正在使用的數據庫:select database();
【建立表】
create table 表名(
字段名 類型(長度) 約束,
字段名 類型(長度) 約束
);
單表約束:
* 主鍵約束:primary key
* 惟一約束:unique
* 非空約束:not null
建立一個分類表:
分類ID int類型主鍵 自動增加
分類名稱 字符串類型 長度20
create table category(
cid int primary key auto_increment,
cname varchar(20)
);
***** 注意:建表以前必定先選擇數據庫.
【查看錶】
查看數據庫中的全部表:show tables;
查看錶結構:desc 表名;
【刪除表】
drop table 表名;
【修改表】
alter table 表名 add 列名 類型(長度) 約束; --修改表添加列.
alter table 表名 modify 列名 類型(長度) 約束; --修改表修改列的類型長度及約束.
alter table 表名 change 舊列名 新列名 類型(長度) 約束; --修改表修改列名.
alter table 表名 drop 列名; --修改表刪除列.
rename table 表名 to 新表名; --修改表名
【插入記錄】
語法:
* insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 向表中插入某些列
* insert into 表 values (值1,值2,值3..); --向表中插入全部列
【修改記錄】
語法:
* update 表名 set 字段名=值,字段名=值 [where 條件];
【刪除記錄】
語法:
* delete from 表名 [where 條件];
【查詢記錄】
語法:
* select [distinct]*[列名,列名] from 表 [where 條件].
建立商品表:
建立商品表:
create table products(
pid int primary key auto_increment,
pname varchar(20),
price double,
pnum int,
cno int,
pdate timestamp
);
【多表查詢】
語法:
* select * from A,B;
2.有關前端頁面的知識點:
【HTML的概述】
HTML:Hyper Text Markup Language 超文本標記語言
l 超文本:比文本功能更增強大
l 標記語言:經過一組標籤對內容進行描述的一門語言
HTML是設計頁面基礎
設計頁面的時候均可以使用HTML
HTML的語法和規範
l HTML文件的擴展名是.html或者是.htm
l HTML文件是由頭和體組成
l HTML這組標籤是不區分大小寫
l HTML的標記一般是由開始標籤和結束標籤組成:<b>內容</b> <br/>
【HTML的字體標籤】
<font>標籤
<font 屬性名=」屬性值」>文字</font>
l size:控制字體大小.最小1 最大7
l color:控制字體顏色. 使用英文設置 ,使用16進制數設置
l face:控制字體.
【HTML的排版標籤】
<hn>標題標籤
<h1>b標題</h1>
<p>段落標籤
<p>一段文字</p>
<br/>換行標籤
<br/>表明換行
<hr/>水平線標籤
<b>字體加粗
<b>文字</b>
<i>斜體標籤
<i>斜體</i>
【HTML的圖片標記】
<img />
l src:圖片的路徑
l width:圖片寬度
l height:圖片的高度
l alt:圖片提示
圖片路徑:
l 分紅相對路徑和絕對路徑
l 相對路徑:
n ./ :表明當前路徑
n ../ :表明上一級路徑
【超連接標籤】
<a>超連接</a>
l href:超連接跳轉的路徑
l target:打開方式
n _self:在自身頁面打開
n _blank:打開一個新窗口
表格的屬性:
l border :表格邊框
l width :表格寬度
l height :表格高度
l align :水平方向對齊方式 left center right
l bgcolor :背景色
3.使用JDBC完成對於分類的CRUD的操做
【JDBC的回顧】
JDBC:Java Data Base Connectivity.
步驟一:註冊驅動.
步驟二:得到鏈接.
步驟三:建立執行SQL語句對象.
步驟四:釋放資源.
DriverManager:
* 註冊驅動:
* 得到鏈接:
Connection:
* 得到執行SQL語句對象.
* Statement createStatement();
* PreparedStatement prepareStatement(String sql);
* CallableStatement prepareCall(String sql);
* 進行事務管理:
* setAutoCommit(boolean flag);
* commit();
* rollback();
Statement:
* 執行SQL語句:
* int executeUpate(String sql); --執行insert update delete語句.
* ResultSet executeQuery(String sql); --執行select語句.
* boolean execute(String sql); --執行select返回true 執行其餘的語句返回false.
ResultSet:
* 遍歷結果集:next();
* 得到結果集中的數據.getXXX(int c); getXXX(String name);
1 package com.itheima.jdbc.utils; 2 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.IOException; 6 import java.sql.Connection; 7 import java.sql.DriverManager; 8 import java.sql.ResultSet; 9 import java.sql.SQLException; 10 import java.sql.Statement; 11 import java.util.Properties; 12 13 /** 14 * JDBC的工具類 15 * @author apple 16 * 17 */ 18 public class JDBCUtils { 19 public static final String DRIVERCLASS; 20 public static final String URL; 21 public static final String USERNAME; 22 public static final String PASSWORD; 23 24 static{ 25 // 得到屬性文件中的數據. 26 Properties properties = new Properties(); 27 try { 28 properties.load(new FileInputStream("src/db.properties")); 29 } catch (FileNotFoundException e) { 30 e.printStackTrace(); 31 } catch (IOException e) { 32 e.printStackTrace(); 33 } 34 35 DRIVERCLASS = properties.getProperty("jdbc.driverClass"); 36 URL = properties.getProperty("jdbc.url"); 37 USERNAME = properties.getProperty("jdbc.username"); 38 PASSWORD = properties.getProperty("jdbc.password"); 39 } 40 41 // 加載驅動: 42 public static void loadDriver(){ 43 try { 44 Class.forName(DRIVERCLASS); 45 } catch (ClassNotFoundException e) { 46 // TODO Auto-generated catch block 47 e.printStackTrace(); 48 } 49 } 50 51 // 得到鏈接: 52 public static Connection getConnection(){ 53 loadDriver(); 54 Connection conn = null; 55 try { 56 conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); 57 } catch (SQLException e) { 58 // TODO Auto-generated catch block 59 e.printStackTrace(); 60 } 61 return conn; 62 } 63 64 // 釋放資源: 65 public static void release(Statement stmt,Connection conn){ 66 if(stmt != null){ 67 try { 68 stmt.close(); 69 } catch (SQLException e) { 70 // TODO Auto-generated catch block 71 e.printStackTrace(); 72 } 73 stmt = null; 74 } 75 76 if(conn != null){ 77 try { 78 conn.close(); 79 } catch (SQLException e) { 80 e.printStackTrace(); 81 } 82 conn = null; 83 } 84 } 85 86 public static void release(ResultSet rs,Statement stmt,Connection conn){ 87 if(rs!= null){ 88 try { 89 rs.close(); 90 } catch (SQLException e) { 91 e.printStackTrace(); 92 } 93 rs = null; 94 } 95 if(stmt != null){ 96 try { 97 stmt.close(); 98 } catch (SQLException e) { 99 // TODO Auto-generated catch block 100 e.printStackTrace(); 101 } 102 stmt = null; 103 } 104 105 if(conn != null){ 106 try { 107 conn.close(); 108 } catch (SQLException e) { 109 e.printStackTrace(); 110 } 111 conn = null; 112 } 113 } 114 }
XML全稱爲Extensible Markup Language,意思是可擴展的標記語言。XML語法上和HTML比較類似,但HTML中的元素是固定的,而XML的標籤是能夠由用戶自定義的。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5"> 3 <servlet> 4 <servlet-name>HelloMyServlet</servlet-name> 5 <servlet-class>cn.itcast.HelloMyServlet</servlet-class> 6 </servlet> 7 <servlet-mapping> 8 <servlet-name>HelloMyServlet</servlet-name> 9 <url-pattern>/hello</url-pattern> 10 </servlet-mapping> 11 </web-app>
1 <?xml version="1.0" encoding="UTF-8"?> 2 <persons> 3 <person id="p001"> 4 <name>張三</name> 5 </person> 6 <person id="p002"> 7 <name>李四</name> 8 </person> 9 </persons>
l XML文檔聲明
<?xml version="1.0" encoding="UTF-8"?>
a) versioin:指定XML文檔版本。必須屬性,由於咱們不會選擇1.1,只會選擇1.0;
b) encoding:指定當前文檔的編碼。可選屬性,默認值是utf-8;
c) standalone:指定文檔獨立性。可選屬性,默認值爲yes,表示當前文檔是獨立文檔。若是爲no表示當前文檔不是獨立的文檔,會依賴外部文件。
l 元素
<servlet>
a) 區分大小寫
b) 不能使用空格,不能使用冒號:
c) 不建議以XML、xml、Xml開頭
l 屬性
<web-app version="2.5">
l 註釋
XML的註釋與HTML相同,即以「<!--」開始,以「-->」結束。註釋內容會被XML解析器忽略!
l 轉義字符
XML中的轉義字符與HTML同樣。
由於不少符號已經被XML文檔結構所使用,因此在元素體或屬性值中想使用這些符號就必須使用轉義字符,例如:「<」、「>」、「’」、「」」、「&」。
5.Servlet
【Servlet的概述】
是運行在服務器端的一小的Java程序,接收和響應從客戶端發送請求.
處理客戶端的請求,而且對請求做出響應.
Servlet的入門:
* 編寫一個類實現Servlet接口.
public class ServletDemo1 implements Servlet{
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
// System.out.println("");
response.getWriter().println("Hello Servlet...");
}
...
}
* 配置Servlet到WEB服務器.
<!-- 配置Servlet -->
<servlet>
<!-- Servlet的名稱 -->
<servlet-name>aaa</servlet-name>
<!-- Servlet的類的全路徑 -->
<servlet-class>com.itheima.servlet.demo1.ServletDemo1</servlet-class>
</servlet>
<!-- 配置Servlet的映射 -->
<servlet-mapping>
<!-- Servlet的名稱 -->
<servlet-name>aaa</servlet-name>
<!-- Servlet的訪問路徑 -->
<url-pattern>/servletDemo1</url-pattern>
</servlet-mapping>