39、匯入介面和新建專案
阿新 • • 發佈:2018-12-03
學習過程:
介面一般需要由美工完成,不過這裡我們並沒有美工,所有html的介面設計我就直接把介面發給大家,下載地址如下,介面分為前臺和後臺兩個部分,大家可以直接使用這些介面就可以了。
一、新建專案,匯入介面和建立包結構
新建一個shop專案,新建相關的jsp頁面,然後開啟所有的html頁面,把頁面複製到專案中,我們是使用MVC三層架構,所有我們建立好相關的的包結構,如下:
二、完成javaBean和dao層類建立
包建立完成好,我們可以先把前期工作完成,匯入相關的lib包,比如資料庫驅動包,然後根據資料庫表建立對應的javaBean,在新建對應的dao類,使用我們把資料庫連線資訊配置好。暫時不要實現程式碼,可以先把系統系統的架構先建立起來。
三、完成使用者管理
專案開發計劃。根據需求分析,系統分為好幾個系統功能模組:分別是使用者資訊管理,商品資訊管理,購物車管理模組,訂單處理模組,我們也可以定下一個簡單的計劃,一個一個功能模組完成,系統慢慢也就是可以全部完成了:
第一天、完成使用者資訊管理
第二天、商品資訊管理
第三天、購物車管理模組和訂單處理模組
第四天、完成郵件傳送、自適應mysql和oracle和測試等工作
那麼今天我們可以先完成部分使用者資訊管理,今天的內容和前面的課程講解差不多,基本上算是複習了,程式碼需要自己完成,下面給出部分的實現程式碼。
1、前臺登入功能
dao層的實現:
public class MemberDao extends BaseDao { /** * 註冊客戶 * * @param member * 客戶資訊 * @return */ public void addMember(Member member) { getCon(); String sql = "insert into member(login_name,passwd,real_name,addr,member_email,phone,postcode,head) values(?,?,?,?,?,?,?,?)"; int temp = exeUpdate( sql, new Object[] { member.getLoginName(), member.getPasswd(), member.getRealName(), member.getAddr(), member.getMemberEmail(), member.getPhone(), member.getPostcode(), member.getHead() }); // 獲得插入的使用者Id rs = exeQuery("SELECT LAST_INSERT_ID()", null); try { if (rs.next()) { member.setMemberId(rs.getInt(1)); } } catch (SQLException e) { e.printStackTrace(); } closeAll(); } /** * 使用者登入 * * @param loginName * 使用者名稱 * @param password * 密碼 * @return */ public Member login(String loginName, String password) { Member member = getMemberByName(loginName); if (member != null && member.getPasswd() != null && member.getPasswd().equals(password)) { return member; } else { return null; } } /** * 根據使用者名稱獲得用 * * @param loginName * @return */ public Member getMemberByName(String loginName) { Member member = null; getCon(); String sql = "select * from member where login_name=?"; rs = exeQuery(sql, new Object[] { loginName }); try { if (rs.next()) { member = new Member(); member.setMemberId(rs.getInt("member_id")); member.setLoginName(rs.getString("login_name")); member.setRealName(rs.getString("real_name")); member.setPasswd(rs.getString("passwd")); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } closeAll(); return member; } /** * 刪除 * * @param mid * @return */ public int deleteMember(int mid) { int result = 0; getCon(); String sql = "delete from member where member_id=?"; result = exeUpdate(sql, new Object[] { mid }); return result; } /** * 修改密碼 * * @param mid * @param passwrod * @return */ public int updatePassword(int mid, String passwrod) { int result = 0; getCon(); String sql = "update member set passwd=? where member_id=?"; result = exeUpdate(sql, new Object[] { passwrod, mid }); return result; } /** * 修改基本資訊,不包括修改密碼和登入名稱 * * @param member * @return */ public int updateMember(Member member) { int result = 0; getCon(); String sql = "update member set real_name=?,addr=?,member_email=?,phone=?,postcode=?,head=? where member_id=?"; result = exeUpdate( sql, new Object[] { member.getRealName(), member.getAddr(), member.getMemberEmail(), member.getPhone(), member.getPostcode(), member.getHead(), member.getMemberId() }); return result; } /** * * @param page * @return */ public Member getMemberById(int mid) { Member member = null; getCon(); String sql = "select * from member where member_id =? "; rs = exeQuery(sql, new Object[] { mid }); try { if (rs.next()) { member = new Member(); member.setMemberId(rs.getInt("member_id")); member.setLoginName(rs.getString("login_name")); member.setRealName(rs.getString("real_name")); member.setPasswd(rs.getString("passwd")); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ closeAll(); } return member; } /** * * @param page * @return */ public List<Member> getMembers(Page page) { List<Member> members = new ArrayList<Member>(); getCon(); String sql = "select * from member limit ?,?"; rs = exeQuery(sql, new Object[] { page.getItemStart(), page.getPageSize() }); try { while (rs.next()) { Member member = new Member(); member.setMemberId(rs.getInt("member_id")); member.setLoginName(rs.getString("login_name")); member.setRealName(rs.getString("real_name")); member.setPasswd(rs.getString("passwd")); members.add(member); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } closeAll(); return members; } }
2、servlet實現
public class MemberServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); MemberDao memberDao = new MemberDao(); String ope = request.getParameter("ope"); if (ope == null || ope.equals("login")) { // 1、獲得驗證碼 String code = request.getParameter("code"); // 2、判斷驗證碼是否正確 if (code == null || !code.equals(session.getAttribute("validateCode") .toString())) { response.sendRedirect("login.jsp"); return; } // 3、判斷登陸是否成功 String username = request.getParameter("username"); String pass = request.getParameter("pass"); Member member = memberDao.login(username, pass); if (member == null) { response.sendRedirect("login.jsp"); return; } else { //記錄登陸資訊在session中、 session.setAttribute("member", member); String topage = request.getParameter("topage"); if("order".equals(topage)){ response.sendRedirect("cart.jsp"); return; }else{ response.sendRedirect("toIndex"); return; } } } else if (ope.equals("logout")) { session.removeAttribute("member"); response.sendRedirect("toIndex"); return; } else if (ope.equals("register")) { Map<String, String> fields = new HashMap<String, String>(); // 頭像檔案的名稱 String filename = ""; // Create a factory for disk-based file items FileItemFactory factory = new DiskFileItemFactory(); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // Parse the request/* FileItem */ try { List items = upload.parseRequest(request); for (int i = 0; i < items.size(); i++) { FileItem item = (FileItem) items.get(i); // Process a regular form field if (item.isFormField()) { String name = item.getFieldName(); String value = item.getString("UTF-8"); // 獲得所有的表單資料 fields.put(name, value); } if (!item.isFormField()) { // 獲取Web專案的全路徑 String strDirPath = request.getSession().getServletContext().getRealPath( "/"); // 隨機生成檔名稱,並且是唯一的。 filename = UUID.randomUUID().toString(); // 獲得字尾名 如;jpg if (item.getName() != null && item.getName().length() > 0) { String exeend = item.getName().substring( item.getName().lastIndexOf(".")); filename = filename + exeend; File uploadedFile = new File(strDirPath + "//head//" + filename); item.write(uploadedFile); } } } // 判斷驗證碼是否正確 String valsession = (String) request.getSession().getAttribute("validateCode"); String valcode = fields.get("val"); if (valcode == null || !valcode.equals(valsession)) { response.sendRedirect("register.jsp?valerror=error"); return; } // 封裝在member中。 Member member = new Member(); member.setAddr(fields.get("username")); member.setLoginName(fields.get("loginName")); member.setPasswd(fields.get("passwd")); member.setAddr(fields.get("addr")); member.setMemberEmail(fields.get("memberEmail")); member.setPhone(fields.get("phone")); member.setPostcode(fields.get("postcode")); member.setRealName(fields.get("realName")); member.setHead(filename);//頭像 // 新增到資料庫中。 memberDao.addMember(member); // 儲存在session中 request.getSession().setAttribute("member", member); response.sendRedirect("toIndex"); } catch (Exception e) { e.printStackTrace(); } } else if (ope.equals("update")) {//修改基本資訊 } else if (ope.equals("updpass")) {//修改密碼 } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
3、修改登入頁面即可:
<form action="memberServlet?topage=${param.topage }" method="post">
<table align="center">
<tr>
<td>使用者名稱</td>
<td><input name="username" />
</td>
<td></td>
</tr>
<tr>
<td>密碼</td>
<td><input type="password" name="pass" />
</td>
<td></td>
</tr>
<tr>
<td>驗證碼</td>
<td><input name="code" />
</td>
<td></td>
</tr>
<tr>
<td> </td>
<td colspan="2"><img id="val" src="validateCode" onclick="reshcode()"/></td>
</tr>
<tr>
<td><input type="submit" value="登入" /></td>
<td colspan="2"><input type="reset" value="清空" /></td>
</tr>
</table>
</form>