//login.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page import="huc.blog.util.ParamUtils" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
<% String info = ParamUtils.getAttribute(request, "info", "");%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>博客——登录</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link rel="stylesheet" type="text/css" href="css/styles.css"> </head> <body> <CENTER> <jsp:include page="common/indexheader.jsp" /> <FORM action="servlet/DoLogin" method="post"> <TABLE border="1" bordercolor="white"> <TR> <TD colspan="2" align="center">用户登录</TD> </TR> <TR> <TD colspan="2" align="center"><FONT color="red" size="1"><%=info.equals("") ? "" : info%></FONT></TD> </TR> <TR> <TD>用户名:</TD> <TD><INPUT type="text" name="userName" size="20"/></TD> </TR> <TR> <TD>用户密码:</TD> <TD><INPUT type="password" name="userPass" size="20"/></TD> </TR> <TR> <TD colspan="2" align="center"> <INPUT type="submit" name="loginButton" value="登录" class="signinbtn1"/> <INPUT type="reset" name="resetButton" value="重写" class="signinbtn1"/> <INPUT type="button" name="backButton" value="返回" class="signinbtn1" οnclick="location.href='<%=basePath%>'"/> </TD> </TR> </TABLE> </FORM> </CENTER> <jsp:include page="common/footer.jsp" /> </body></html>
//dologin.jsp
package huc.blog.servlet;
import huc.blog.bean.User;import huc.blog.op.UserOp;import huc.blog.util.ParamUtils;
import java.io.IOException;
import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;
public class DoLogin extends HttpServlet {
/** * */ private static final long serialVersionUID = 1L;
/** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); }
/** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { User user = new User(); user.setUserName(ParamUtils.getParameter(request, "userName", "")); user.setUserPass(ParamUtils.getParameter(request, "userPass", "")); String info = new String(); UserOp userOp = new UserOp(); user = userOp.login(user);//user对象传进,返回值仍为user对象 if(user == null){ info = "用户名或密码错误!"; request.setAttribute("info", info); request.getRequestDispatcher("../login.jsp").forward(request, response); } else{ request.getSession().setAttribute("loginUser", user); response.sendRedirect("ShowSpace?userid=" + user.getId()); } }
}///
UserOp.java
package huc.blog.op;
import java.sql.SQLException;import java.util.ArrayList;import java.util.List;
import huc.blog.bean.User;import huc.blog.util.PageObject;
public class UserOp extends BaseOp { /** * (前台)用户登录 * @param user * @return null:不存在该用户;user:存在该用户 */ public User login(User user){ conn = db.getConnection(); try { String sql = "select * from H_USER where userName = ? and userPass = ?"; pst = conn.prepareStatement(sql); pst.setString(1, user.getUserName()); pst.setString(2, user.getUserPass()); rs = pst.executeQuery(); if(rs.next()){ //有记录,代表验证成功!!! //把数据库记录读到user对象,最后返回 user.setId(rs.getString("id")); user.setUserName(rs.getString("userName")); user.setUserPass(rs.getString("userPass")); user.setNickName(rs.getString("nickName")); user.setEmail(rs.getString("email")); user.setBirthday(rs.getString("birthday")); user.setCity(rs.getString("city")); user.setRegDate(rs.getString("regDate")); user.setUpdateTime(rs.getString("updateTime")); user.setSpaceName(rs.getString("spaceName")); user.setSpaceHit(rs.getInt("spaceHit")); user.setIcon(rs.getString("icon")); user.setIsCommend(rs.getInt("isCommend")); } else{ return null; } } catch (SQLException e) { e.printStackTrace(); return null; } finally{ close(); } return user; } /** * 检查该用户是否已经注册 * @param user * @return true:存在;false:不存在 */ public boolean checkExist(User user){ conn = db.getConnection(); boolean flag = false; try { StringBuffer sql = new StringBuffer(); sql.append("select * from H_USER where userName = ?"); pst = conn.prepareStatement(sql.toString()); pst.setString(1, user.getUserName()); rs = pst.executeQuery(); if(rs.next()) flag = true; else flag = false; } catch (SQLException e) { e.printStackTrace(); return flag; } finally{ close(); } return flag; }
/** * 增加一个新用户 * @param user * @return */ public boolean add(User user){ conn = db.getConnection(); boolean flag = false; try { StringBuffer sql = new StringBuffer(); sql.append("insert into H_USER("); sql.append("userName,userPass,nickName,email,birthday,city,"); sql.append("regDate,updateTime,spaceName,spaceHit,icon,isCommend)"); sql.append(" values(?,?,?,?,?,?,?,?,?,?,?,?)"); pst = conn.prepareStatement(sql.toString()); pst.setString(1, user.getUserName()); pst.setString(2, user.getUserPass()); pst.setString(3, user.getNickName()); pst.setString(4, user.getEmail()); pst.setString(5, user.getBirthday()); pst.setString(6, user.getCity()); pst.setString(7, user.getRegDate()); pst.setString(8, user.getUpdateTime()); pst.setString(9, user.getSpaceName()); pst.setInt(10, user.getSpaceHit()); pst.setString(11, user.getIcon()); pst.setInt(12, user.getIsCommend()); int line = pst.executeUpdate(); if(line == 1) flag = true; else flag = false; } catch (SQLException e) { e.printStackTrace(); return flag; } finally{ close(); } return flag; }
/** * 修改用户 * @param user * @return true:更新成功;false:更新失败 */ public boolean update(User user){ conn = db.getConnection(); boolean flag = false; try { StringBuffer sql = new StringBuffer(); sql.append("update H_USER set "); sql.append(" userName=?,userPass=?,nickName=?,email=?,birthday=?,city=?,"); sql.append(" regDate=?,updateTime=?,spaceName=?,spaceHit=?,icon=?,isCommend=?"); sql.append(" where id = ?"); pst = conn.prepareStatement(sql.toString()); pst.setString(1, user.getUserName()); pst.setString(2, user.getUserPass()); pst.setString(3, user.getNickName()); pst.setString(4, user.getEmail()); pst.setString(5, user.getBirthday()); pst.setString(6, user.getCity()); pst.setString(7, user.getRegDate()); pst.setString(8, user.getUpdateTime()); pst.setString(9, user.getSpaceName()); pst.setInt(10, user.getSpaceHit()); pst.setString(11, user.getIcon()); pst.setInt(12, user.getIsCommend()); pst.setString(13, user.getId()); int line = pst.executeUpdate(); if(line == 1) flag = true; else flag = false; } catch (SQLException e) { e.printStackTrace(); return flag; } finally{ close(); } return flag; }
/** * 删除用户 * @param user * @return true:更新成功;false:更新失败 */ public boolean delete(User user){ conn = db.getConnection(); boolean flag = false; try { StringBuffer sql = new StringBuffer(); sql.append("delete from H_USER where id = ? or userName = ?"); pst = conn.prepareStatement(sql.toString()); pst.setString(1, user.getId()); pst.setString(2, user.getUserName()); int line = pst.executeUpdate(); if(line == 1) flag = true; else flag = false; } catch (SQLException e) { e.printStackTrace(); return flag; } finally{ close(); } return flag; }
/** * 获得指定id的user * @param id 指定查询的user的id * @return */ public User getUserById(String id){ conn = db.getConnection(); User user = null; try { StringBuffer sql = new StringBuffer(); sql.append("select * from H_USER"); sql.append(" where id = ? "); pst = conn.prepareStatement(sql.toString()); pst.setString(1, id); rs = pst.executeQuery(); if(rs.next()){ user = new User(); user.setId(rs.getString("id")); user.setUserName(rs.getString("userName")); user.setUserPass(rs.getString("userPass")); user.setNickName(rs.getString("nickName")); user.setEmail(rs.getString("email")); user.setBirthday(rs.getString("birthday")); user.setCity(rs.getString("city")); user.setRegDate(rs.getString("regDate")); user.setUpdateTime(rs.getString("updateTime")); user.setSpaceName(rs.getString("spaceName")); user.setSpaceHit(rs.getInt("spaceHit")); user.setIcon(rs.getString("icon")); user.setIsCommend(rs.getInt("isCommend")); } } catch (SQLException e) { e.printStackTrace(); } finally{ close(); } return user; }
/** * 列出符合查询条件的users * @param otherSQL 指定查询的条件 like(" and param = value") * @param orderBy 指定查询结果的排序方式 like(" order by time desc") * @return */ public List getUsers(String otherSQL, String orderBy){ return this.getUsers(0, otherSQL, orderBy); } /** * 列出符合查询条件的users * @param listNumber 指定列出符合查询条件的数目 * @param otherSQL 指定查询的条件 like(" and param = value") * @param orderBy 指定查询结果的排序方式 like(" order by time desc") * @return */ public List getUsers(int listNumber, String otherSQL, String orderBy){ conn = db.getConnection(); List result = new ArrayList(); try { StringBuffer sql = new StringBuffer(); sql.append("select "); if(listNumber != 0){ sql.append(" top "); sql.append(listNumber); } sql.append(" * from H_USER"); sql.append(" where 1 = 1 "); if(otherSQL != null && !otherSQL.trim().equals("")) sql.append(otherSQL); if(orderBy != null && !orderBy.trim().equals("")){ sql.append(orderBy); } pst = conn.prepareStatement(sql.toString()); rs = pst.executeQuery(); while(rs.next()){ User user = new User(); user.setId(rs.getString("id")); user.setUserName(rs.getString("userName")); user.setUserPass(rs.getString("userPass")); user.setNickName(rs.getString("nickName")); user.setEmail(rs.getString("email")); user.setBirthday(rs.getString("birthday")); user.setCity(rs.getString("city")); user.setRegDate(rs.getString("regDate")); user.setUpdateTime(rs.getString("updateTime")); user.setSpaceName(rs.getString("spaceName")); user.setSpaceHit(rs.getInt("spaceHit")); user.setIcon(rs.getString("icon")); user.setIsCommend(rs.getInt("isCommend")); result.add(user); } } catch (SQLException e) { e.printStackTrace(); return new ArrayList(); } finally{ close(); } return result; } /** * 获得分页的数据 * @param page 封装的分页信息 * @param otherSQL 分页数据的查询条件 like(" and param = value") * @param orderBy 分页数据的排序方式 like(" order by time desc") * @return 封装的分页数据 */ public PageObject getPage(PageObject page, String otherSQL, String orderBy){ conn = db.getConnection(); try { StringBuffer sql = new StringBuffer(); //获得符合分页的对象的总记录数 sql.append("select count(1) as total from H_USER where 1=1 "); if(otherSQL != null && !otherSQL.trim().equals("")) sql.append(otherSQL);
pst = conn.prepareStatement(sql.toString()); rs = pst.executeQuery(); if(rs.next() && rs.getInt("total") != 0) page.setTotal(rs.getInt("total")); else{ page.setList(new ArrayList()); page.setTotal(0); return page; } rs.close();
//得到分页sql语句 sql = this.getSQL(page, " * from H_USER ", otherSQL, orderBy); pst = conn.prepareStatement(sql.toString()); rs = pst.executeQuery();
List result = new ArrayList(); while(rs.next()){ User user = new User(); user.setId(rs.getString("id")); user.setUserName(rs.getString("userName")); user.setUserPass(rs.getString("userPass")); user.setNickName(rs.getString("nickName")); user.setEmail(rs.getString("email")); user.setBirthday(rs.getString("birthday")); user.setCity(rs.getString("city")); user.setRegDate(rs.getString("regDate")); user.setUpdateTime(rs.getString("updateTime")); user.setSpaceName(rs.getString("spaceName")); user.setSpaceHit(rs.getInt("spaceHit")); user.setIcon(rs.getString("icon")); user.setIsCommend(rs.getInt("isCommend")); result.add(user); } page.setList(result); } catch (SQLException e) { e.printStackTrace(); return page; } finally{ close(); } return page; } /** * 更新点击率 * @param userid - 要更新的博客空间用户的id */ public void updateHit(String userid){ conn = db.getConnection(); try { StringBuffer sql = new StringBuffer(); sql.append("update H_USER set spaceHit=spaceHit+1 where id = ?"); pst = conn.prepareStatement(sql.toString()); pst.setString(1, userid); pst.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally{ close(); } }}