//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();
}
}
}