package com.twitter.servlet; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.twitter.dao.ConcernDao; import com.twitter.dao.SigninDao; import com.twitter.dao.UsersDao; import com.twitter.dao.UsersinfoDao; import com.twitter.pojo.Concern; import com.twitter.pojo.Users; import com.twitter.pojo.Usersall; import com.twitter.pojo.Usersinfo; import com.twitter.util.Md5Util; import com.twitter.util.Times; import com.twitter.util.Upload; import Decoder.BASE64Decoder; import net.sf.json.JSONArray; import net.sf.json.JSONObject; /** * Servlet implementation class UserServlet */ @WebServlet("/user.do") public class UserServlet extends HttpServlet { private UsersDao usersDao = new UsersDao(); private UsersinfoDao usersinfoDao = new UsersinfoDao(); private ConcernDao concernDao = new ConcernDao(); private SigninDao signinDao = new SigninDao(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); String method = request.getParameter("method"); if ("checklogin".equals(method)) { checkLogin(request, response); } if ("register".equals(method)) { toRegister(request, response); } if ("checkuser".equals(method)) { checkUser(request, response); } if ("signup".equals(method)) { signUp(request, response); } if ("checkaite".equals(method)) { checkAite(request, response); } if ("exit".equals(method)) { toExit(request, response); } if ("search".equals(method)) { toSearch(request, response); } if ("iswho".equals(method)) { toSearchWho(request, response); } if ("shuaxintuijian".equals(method)) { toShuaXinTuiJian(request, response); } if ("getziliaoka".equals(method)) { toGetZiLiao(request, response); } if ("xiugaitouxiang".equals(method)) { toChangeLogo(request, response); } if ("chayonghu".equals(method)) { toChaUser(request, response); } if ("updatebrithday".equals(method)) { toUpdateBrithday(request, response); } if ("updateabout".equals(method)) { toUpdateAbout(request, response); } if ("gengxininfo".equals(method)) { toGengXinInfo(request, response); } if ("catsession".equals(method)) { toCatSession(request, response); } if ("xiugaibg".equals(method)) { toUpdateBg(request, response); } if ("xiugaiziliao".equals(method)) { toUpdateData(request, response); } } private void toUpdateData(HttpServletRequest request, HttpServletResponse response) throws IOException { String urealname = request.getParameter("urealname"); String uaite = request.getParameter("uaite"); String uabout = request.getParameter("uabout"); String date = request.getParameter("udate"); String brithy = date.substring(0, date.indexOf("日")).replaceAll("[\u4e00-\u9fa5]", "-") + " 00:00:00"; Timestamp brithyDate = Timestamp.valueOf(brithy); HttpSession session = request.getSession(); Users user = (Users) session.getAttribute("user"); int uid = user.getUid(); int n = usersinfoDao.updateData(uid, urealname, uaite, uabout, brithyDate); if (n > 0) { Users users = usersDao.findById(uid); Usersinfo info = usersinfoDao.getInfos(uid); session.setAttribute("info", info); session.setAttribute("user", users); response.getWriter().print("ok"); } } private void toUpdateBg(HttpServletRequest request, HttpServletResponse response) throws IOException { HttpSession session = request.getSession(); Users user = (Users) session.getAttribute("user"); int uid = user.getUid(); String path = request.getSession().getServletContext().getRealPath("img/") + user.getUname(); Map<String, String> map = Upload.upload(request, 100 * 1024 * 1024, path); String picName = map.get("picpath"); int n = usersinfoDao.updateBg(uid, picName); if (n > 0) { Usersinfo info = usersinfoDao.getInfos(uid); session.setAttribute("info", info); response.getWriter().print("ok"); } } private void toCatSession(HttpServletRequest request, HttpServletResponse response) throws IOException { /* * HttpSession session = request.getSession(); Users user = (Users) * session.getAttribute("user"); if (user == null) { * response.getWriter().print("exit"); return; } * response.getWriter().print("have"); */ } private void toGengXinInfo(HttpServletRequest request, HttpServletResponse response) throws IOException { String neirong = request.getParameter("neirong"); HttpSession session = request.getSession(); Users user = (Users) session.getAttribute("user"); int uid = user.getUid(); Usersinfo info = usersinfoDao.getInfos(uid); session.setAttribute("info", info); if ("two".equals(neirong)) { if (info.getUlogo() != "default_profile_normal.png" && info.getUabout() != null) { response.getWriter().print("ok"); } return; } } private void toUpdateAbout(HttpServletRequest request, HttpServletResponse response) throws IOException { String uabout = request.getParameter("about"); HttpSession session = request.getSession(); Users user = (Users) session.getAttribute("user"); int uid = user.getUid(); int n = usersinfoDao.updateAbout(uid, uabout); if (n > 0) { Usersinfo info = usersinfoDao.getInfos(uid); session.setAttribute("info", info); response.getWriter().print("ok"); } } private void toUpdateBrithday(HttpServletRequest request, HttpServletResponse response) throws IOException { String date = request.getParameter("date"); String brithy = date.substring(0, date.indexOf("日")).replaceAll("[\u4e00-\u9fa5]", "-") + " 00:00:00"; Timestamp brithyDate = Timestamp.valueOf(brithy); HttpSession session = request.getSession(); Users user = (Users) session.getAttribute("user"); int uid = user.getUid(); int n = usersinfoDao.updateDate(uid, brithyDate); if (n > 0) { Usersinfo info = usersinfoDao.getInfos(uid); session.setAttribute("info", info); response.getWriter().print("ok"); } } private void toChaUser(HttpServletRequest request, HttpServletResponse response) throws IOException { JSONArray js = new JSONArray(); String name = request.getParameter("name"); List<Usersall> list = usersinfoDao.searchWord(name); if (list == null) { response.getWriter().print("kong"); return; } for (Usersall users : list) { js.add(getJsonObj(users.getUid(), users.getUname(), users.getUrealname(), users.getUaite(), users.getUonline(), users.getUabout(), users.getUlogo(), users.getUbg(), users.getUfans(), users.getUtweet(), users.getUfollow(), users.getUcolor(), users.getUaddress(), users.getGuanzhu())); } response.getWriter().write(js.toString()); } private void toChangeLogo(HttpServletRequest request, HttpServletResponse response) throws IOException { String ulogo = request.getParameter("touxiang"); HttpSession session = request.getSession(); Users user = (Users) session.getAttribute("user"); int uid = user.getUid(); ulogo = ulogo.substring(ulogo.indexOf(",") + 1); BASE64Decoder decoder = new BASE64Decoder(); String newFileName = null; try { // Base64解码 byte[] b = decoder.decodeBuffer(ulogo); for (int i = 0; i < b.length; ++i) { if (b[i] < 0) {// 调整异常数据 b[i] += 256; } } // 生成jpeg图片 String path = request.getSession().getServletContext().getRealPath("img/") + user.getUname(); newFileName = new Date().getTime() + ".png"; String imgFilePath = path + "/" + newFileName;// 新生成的图片 OutputStream out = new FileOutputStream(imgFilePath); out.write(b); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } int n = usersinfoDao.updateUlogo(uid, newFileName); if (n > 0) { Usersinfo info = usersinfoDao.getInfos(uid); session.setAttribute("info", info); response.getWriter().print("ok"); } } private void toGetZiLiao(HttpServletRequest request, HttpServletResponse response) throws IOException { JSONArray js = new JSONArray(); String uid = request.getParameter("uid"); HttpSession session = request.getSession(); Users user = (Users) session.getAttribute("user"); int f_uid = user.getUid(); Usersall users = usersinfoDao.getInfo(Integer.parseInt(uid)); int result = concernDao.hasFollow(f_uid, Integer.parseInt(uid)); if (result == 1) { users.setGuanzhu(1); } else { users.setGuanzhu(0); } js.add(getJsonObj(users.getUid(), users.getUname(), users.getUrealname(), users.getUaite(), users.getUonline(), users.getUabout(), users.getUlogo(), users.getUbg(), users.getUfans(), users.getUtweet(), users.getUfollow(), users.getUcolor(), users.getUaddress(), users.getGuanzhu())); response.getWriter().write(js.toString()); } private void toShuaXinTuiJian(HttpServletRequest request, HttpServletResponse response) throws IOException { JSONArray js = new JSONArray(); HttpSession session = request.getSession(); Users user = (Users) session.getAttribute("user"); int uid = user.getUid(); Usersinfo info = usersinfoDao.getInfos(uid); session.setAttribute("info", info); List<Concern> concernList = new ArrayList<Concern>(); List<Usersall> list = new ArrayList<Usersall>(); concernList = concernDao.getSuid(uid); if (concernList == null) { list = usersinfoDao.selTuiJian(uid, null); } else { List<Integer> uidList = new ArrayList<Integer>(); for (int i = 0; i < concernList.size(); i++) { uidList.add(concernList.get(i).getS_uid()); } list = usersinfoDao.selTuiJian(uid, uidList); } for (Usersall users : list) { js.add(getJsonObj(users.getUid(), users.getUname(), users.getUrealname(), users.getUaite(), users.getUonline(), users.getUabout(), users.getUlogo(), users.getUbg(), users.getUfans(), users.getUtweet(), users.getUfollow(), users.getUcolor(), users.getUaddress(), users.getGuanzhu())); } response.getWriter().write(js.toString()); } private void toSearchWho(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String uid = request.getParameter("id"); String realname = request.getParameter("who"); realname = new String(realname.getBytes("ISO8859-1"), "UTF-8"); HttpSession session = request.getSession(); Users user = (Users) session.getAttribute("user"); int f_uid = user.getUid(); if (f_uid == Integer.parseInt(uid)) { response.sendRedirect("selfdetail.jsp"); return; } Usersall who = usersinfoDao.searchWho(uid); int result = concernDao.hasFollow(f_uid, Integer.parseInt(uid)); if (result == 1) { who.setGuanzhu(1); } else { who.setGuanzhu(0); } session.setAttribute("who", who); request.getRequestDispatcher("otherdetail.jsp").forward(request, response); } // 查询用户 private void toSearch(HttpServletRequest request, HttpServletResponse response) throws IOException { JSONArray js = new JSONArray(); HttpSession session = request.getSession(); Users user = (Users) session.getAttribute("user"); int f_uid = user.getUid(); String word = request.getParameter("word"); String pagenum = request.getParameter("pagenum"); String fanwei = request.getParameter("fanwei"); if (word == null) { word = ""; } // who关注的人 if ("followtwo".equals(fanwei)) { Usersall who = (Usersall) session.getAttribute("who"); int fw_uid = who.getUid(); List<Concern> concernList = new ArrayList<Concern>(); concernList = concernDao.getSuid(fw_uid); if (concernList == null) { response.getWriter().write("nono"); return; } List<Integer> uidList = new ArrayList<Integer>(); for (int i = 0; i < concernList.size(); i++) { uidList.add(concernList.get(i).getS_uid()); } List<Usersall> list = usersinfoDao.searchWord(word.trim(), uidList, Integer.parseInt(pagenum)); if (list == null) { response.getWriter().write("没有"); return; } for (Usersall users : list) { users.setGuanzhu(1); js.add(getJsonObj(users.getUid(), users.getUname(), users.getUrealname(), users.getUaite(), users.getUonline(), users.getUabout(), users.getUlogo(), users.getUbg(), users.getUfans(), users.getUtweet(), users.getUfollow(), users.getUcolor(), users.getUaddress(), users.getGuanzhu())); } response.getWriter().write(js.toString()); return; } // who粉丝 if ("fanstwo".equals(fanwei)) { Usersall who = (Usersall) session.getAttribute("who"); int fw_uid = who.getUid(); List<Concern> concernList = new ArrayList<Concern>(); concernList = concernDao.getFuid(fw_uid); if (concernList == null) { response.getWriter().write("nono"); return; } List<Integer> uidList = new ArrayList<Integer>(); for (int i = 0; i < concernList.size(); i++) { uidList.add(concernList.get(i).getF_uid()); } List<Usersall> list = usersinfoDao.searchWord(word.trim(), uidList, Integer.parseInt(pagenum)); if (list == null) { response.getWriter().write("没有"); return; } for (Usersall users : list) { int result = concernDao.hasFollow(f_uid, users.getUid()); if (result == 1) { users.setGuanzhu(1); } else { users.setGuanzhu(0); } js.add(getJsonObj(users.getUid(), users.getUname(), users.getUrealname(), users.getUaite(), users.getUonline(), users.getUabout(), users.getUlogo(), users.getUbg(), users.getUfans(), users.getUtweet(), users.getUfollow(), users.getUcolor(), users.getUaddress(), users.getGuanzhu())); } response.getWriter().write(js.toString()); return; } // 关注的人 if ("follow".equals(fanwei)) { List<Concern> concernList = new ArrayList<Concern>(); concernList = concernDao.getSuid(f_uid); if (concernList == null) { response.getWriter().write("no"); return; } List<Integer> uidList = new ArrayList<Integer>(); for (int i = 0; i < concernList.size(); i++) { uidList.add(concernList.get(i).getS_uid()); } List<Usersall> list = usersinfoDao.searchWord(word.trim(), uidList, Integer.parseInt(pagenum)); if (list == null) { response.getWriter().write("没有"); return; } for (Usersall users : list) { users.setGuanzhu(1); js.add(getJsonObj(users.getUid(), users.getUname(), users.getUrealname(), users.getUaite(), users.getUonline(), users.getUabout(), users.getUlogo(), users.getUbg(), users.getUfans(), users.getUtweet(), users.getUfollow(), users.getUcolor(), users.getUaddress(), users.getGuanzhu())); } response.getWriter().write(js.toString()); return; } // 粉丝 if ("fans".equals(fanwei)) { List<Concern> concernList = new ArrayList<Concern>(); concernList = concernDao.getFuid(f_uid); if (concernList == null) { response.getWriter().write("no"); return; } List<Integer> uidList = new ArrayList<Integer>(); for (int i = 0; i < concernList.size(); i++) { uidList.add(concernList.get(i).getF_uid()); } List<Usersall> list = usersinfoDao.searchWord(word.trim(), uidList, Integer.parseInt(pagenum)); if (list == null) { response.getWriter().write("没有"); return; } for (Usersall users : list) { int result = concernDao.hasFollow(f_uid, users.getUid()); if (result == 1) { users.setGuanzhu(1); } else { users.setGuanzhu(0); } js.add(getJsonObj(users.getUid(), users.getUname(), users.getUrealname(), users.getUaite(), users.getUonline(), users.getUabout(), users.getUlogo(), users.getUbg(), users.getUfans(), users.getUtweet(), users.getUfollow(), users.getUcolor(), users.getUaddress(), users.getGuanzhu())); } response.getWriter().write(js.toString()); return; } // 全部 List<Usersall> list = usersinfoDao.searchWord(word.trim(), Integer.parseInt(pagenum)); if (list == null) { response.getWriter().write("没有"); return; } for (Usersall users : list) { int result = concernDao.hasFollow(f_uid, users.getUid()); if (result == 1) { users.setGuanzhu(1); } else { users.setGuanzhu(0); } js.add(getJsonObj(users.getUid(), users.getUname(), users.getUrealname(), users.getUaite(), users.getUonline(), users.getUabout(), users.getUlogo(), users.getUbg(), users.getUfans(), users.getUtweet(), users.getUfollow(), users.getUcolor(), users.getUaddress(), users.getGuanzhu())); } response.getWriter().print(js.toString()); } public JSONObject getJsonObj(int uid, String uname, String urealname, String uaite, int uonline, String uabout, String ulogo, String ubg, int ufans, int utweet, int ufollow, String ucolor, String uaddress, int guanzhu) { JSONObject jsonobj = new JSONObject(); jsonobj.put("uid", uid + ""); jsonobj.put("urealname", urealname + ""); jsonobj.put("uaite", uaite + ""); jsonobj.put("uonline", uonline + ""); if (uabout == null) { jsonobj.put("uabout", ""); } else { jsonobj.put("uabout", uabout + ""); } jsonobj.put("ulogo", ulogo + ""); jsonobj.put("ubg", ubg + ""); jsonobj.put("ufans", ufans + ""); jsonobj.put("utweet", utweet + ""); jsonobj.put("uname", uname + ""); jsonobj.put("ufollow", ufollow + ""); jsonobj.put("ucolor", ucolor + ""); jsonobj.put("uaddress", uaddress + ""); jsonobj.put("guanzhu", guanzhu + ""); return jsonobj; } // 登出 private void toExit(HttpServletRequest request, HttpServletResponse response) throws IOException { HttpSession session = request.getSession(); if (session.getAttribute("admin") == null) { session.invalidate(); response.sendRedirect("index.jsp"); return; } Users user = (Users) session.getAttribute("user"); ServletContext application = session.getServletContext(); application.removeAttribute(((Users) session.getAttribute("user")).getUname()); Integer onlineNum = (Integer) application.getAttribute("onlineNum"); if (onlineNum > 0) { application.setAttribute("onlineNum", onlineNum - 1); } Object signinid = session.getAttribute("signinid"); int uid = user.getUid(); Timestamp sdtime = Times.getSystemTime(); usersDao.updateOnline(0, uid); signinDao.updateSignin((Integer) signinid, sdtime); response.sendRedirect("index.jsp"); } // 验证@用户名是否存在 private void checkAite(HttpServletRequest request, HttpServletResponse response) throws IOException { String aite = request.getParameter("aite"); boolean success = usersDao.checkUaite(aite); if (success) { response.getWriter().print("no"); } else { response.getWriter().print("yes"); } } // 注册 private void signUp(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); String name = (String) session.getAttribute("name"); String uname = (String) session.getAttribute("uname"); String pwd = (String) session.getAttribute("pwd"); String aite = request.getParameter("aite"); Timestamp utime = Times.getSystemTime(); int n = usersDao.addUser(uname, pwd, name, aite, utime); if (n > 0) { ServletContext application = session.getServletContext(); Integer zhuceNum = (Integer) application.getAttribute("zhuceNum"); if (zhuceNum == null) { zhuceNum = 1; } else { zhuceNum += 1; } application.setAttribute("newTweetNum", zhuceNum); Users user = usersDao.checkLogin(uname, pwd); int m = usersinfoDao.addUserinfo(user.getUid()); if (m > 0) { Usersinfo info = usersinfoDao.getInfos(user.getUid()); String folder = request.getSession().getServletContext().getRealPath("/img/" + user.getUname()); String img = request.getSession().getServletContext().getRealPath("/img"); File file = new File(folder); file.mkdir(); InputStream is = new FileInputStream(img + "/" + info.getUlogo()); OutputStream os = new FileOutputStream(folder + "/" + info.getUlogo(), true); byte[] b = new byte[1024]; int a = is.read(b); // 实际读到的文件的长度 while (a > 0) { os.write(b, 0, a); a = is.read(b); } os.close(); is.close(); session.setAttribute("info", info); session.setAttribute("user", user); response.sendRedirect("start.jsp"); } } } // 验证用户 private void checkUser(HttpServletRequest request, HttpServletResponse response) throws IOException { String username = request.getParameter("username"); boolean success = usersDao.checkUsername(username); if (success) { response.getWriter().print("no"); } else { response.getWriter().print("yes"); } } private void toRegister(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); String uname = request.getParameter("uname"); String pwd = request.getParameter("pwd"); String order = request.getParameter("order"); pwd = Md5Util.getMd5(pwd); request.setAttribute("name", name); request.setAttribute("uname", uname); request.setAttribute("pwd", pwd); if ("first".equals(order)) { request.getRequestDispatcher("register.jsp").forward(request, response); return; } HttpSession session = request.getSession(); session.setAttribute("name", name); session.setAttribute("uname", uname); session.setAttribute("pwd", pwd); request.getRequestDispatcher("next.jsp").forward(request, response); } // 验证登录信息 private void checkLogin(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String username = request.getParameter("username"); String password = request.getParameter("password"); if (username == "" && password == "") { request.setAttribute("display", "show"); request.getRequestDispatcher("login.jsp?display=show").forward(request, response); return; } password = Md5Util.getMd5(password); Users user = usersDao.checkLogin(username, password); if (user == null) { request.setAttribute("display", "show"); request.getRequestDispatcher("login.jsp").forward(request, response); return; } if (user.getUstate() == 0) { request.setAttribute("display", "stop"); request.getRequestDispatcher("login.jsp").forward(request, response); return; } Usersinfo info = usersinfoDao.getInfos(user.getUid()); ServletContext application = request.getSession().getServletContext(); HttpSession oldSession = (HttpSession) application.getAttribute(user.getUname()); if (oldSession != null) { oldSession.invalidate(); } HttpSession session = request.getSession(); session.setAttribute("user", user); session.setAttribute("info", info); application.setAttribute(user.getUname(), session); Integer onlineNum = (Integer) application.getAttribute("onlineNum"); if (onlineNum == null) { onlineNum = new Integer(1); } else { int count = onlineNum.intValue(); onlineNum = count + 1; } application.setAttribute("onlineNum", onlineNum); request.getRequestDispatcher("signin.do?method=online").forward(request, response); // response.sendRedirect("main.jsp"); } }