1. 程式人生 > >39、匯入介面和新建專案

39、匯入介面和新建專案

學習過程:

介面一般需要由美工完成,不過這裡我們並沒有美工,所有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>&nbsp;</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>