学习过程:
界面一般需要由美工完成,不过这里我们并没有美工,所有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>