userjsp.java
来自「社区文章采用的是平板、树形自由选择的两种展示方式」· Java 代码 · 共 443 行
JAVA
443 行
/*
* Created on 2007-2-25
* Last modified on 2008-1-12
* Powered by YeQiangWei.com
*/
package com.yeqiangwei.club.view.jsp;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import com.yeqiangwei.club.param.FavoriteParameter;
import com.yeqiangwei.club.param.ManageLogParameter;
import com.yeqiangwei.club.param.TopicParameter;
import com.yeqiangwei.club.param.UserParameter;
import com.yeqiangwei.club.service.ServiceLocator;
import com.yeqiangwei.club.service.ServiceWrapper;
import com.yeqiangwei.club.service.search.SearchFactory;
import com.yeqiangwei.club.service.search.SearchParameter;
import com.yeqiangwei.club.service.search.SearchProvider;
import com.yeqiangwei.club.service.topic.ReplyService;
import com.yeqiangwei.club.service.topic.TopicService;
import com.yeqiangwei.club.service.user.UserLogin;
import com.yeqiangwei.club.service.user.UserService;
import com.yeqiangwei.club.service.util.ManageLogService;
import com.yeqiangwei.club.service.forum.FavoriteForumService;
import com.yeqiangwei.club.service.forum.ForumService;
import com.yeqiangwei.club.service.message.MessageService;
import com.yeqiangwei.club.model.Forum;
import com.yeqiangwei.club.model.ManageLog;
import com.yeqiangwei.club.model.Reply;
import com.yeqiangwei.club.model.Topic;
import com.yeqiangwei.club.model.User;
import com.yeqiangwei.club.util.BeanLocator;
import com.yeqiangwei.club.util.BeanUtils;
import com.yeqiangwei.club.util.MessageUtils;
import com.yeqiangwei.club.util.PaginationHelper;
import com.yeqiangwei.util.FormatDateTime;
import com.yeqiangwei.util.HttpServletUtils;
import com.yeqiangwei.util.ParamUtils;
import com.yeqiangwei.util.StringHelper;
import com.yeqiangwei.util.TypeChange;
import com.yeqiangwei.util.Validator;
import com.yeqiangwei.club.controller.form.AProfileForm;
import com.yeqiangwei.club.controller.form.EmailForm;
import com.yeqiangwei.club.controller.form.build.EmailBuild;
import com.yeqiangwei.club.ip.IPSeeker;
import com.yeqiangwei.club.view.model.ForumView;
import com.yeqiangwei.club.view.model.ManageLogView;
import com.yeqiangwei.club.view.model.ReplyView;
import com.yeqiangwei.club.view.model.TopicView;
import com.yeqiangwei.club.view.model.UserView;
import com.yeqiangwei.html.OutPrint;
import com.yeqiangwei.net.URL;
/**
*
* @author 一般人
*/
public class UserJsp extends BaseJsp{
private static final Logger logger = Logger.getLogger(UserJsp.class);
private UserView userView;
private String pagination;
private int page = 1;
private byte orderBy = 0;
public UserJsp(HttpServletRequest request, HttpServletResponse response) {
super(request, response);
}
private SearchProvider<User> searcher;
public List<ManageLogView> findMyLogs(int rows){
int userId = ParamUtils.getIntParameter(request,"userId",0);
if(userId==0){
userId = UserLogin.getUserId(request);
}
return this.findMyLogs(userId, rows);
}
public void updateViews(){
int userId = ParamUtils.getIntParameter(request, "userId", 0);
if(userId>0&&!ParamUtils.getCookieValue(request, "userviews", "").equalsIgnoreCase("1")){
this.getUserService().setViews(userId, 1);
ParamUtils.setCookieValue(response, "userviews", "1", 0);
}
}
public List<ManageLogView> findMyLogs(int userId, int rows){
List<ManageLogView> vlist = null;
ManageLogParameter param = new ManageLogParameter();
param.setUserId(userId);
param.setPage(1);
param.setRows(rows);
param.setIsList(true);
List<ManageLog> list = this.getManageLogService().findByParameter(param);
if(!Validator.isEmpty(list)){
vlist = new ArrayList<ManageLogView>();
for(ManageLog model:list){
ManageLogView v = new ManageLogView();
BeanUtils.copyProperties(v, model);
UserView myView = new UserView();
BeanUtils.copyProperties(myView, this.getUserService().findById(v.getUserId()));
v.setMyView(myView);
UserView byView = new UserView();
BeanUtils.copyProperties(byView, this.getUserService().findById(v.getByUserId()));
v.setByView(byView);
ForumView forumView = new ForumView();
BeanUtils.copyProperties(forumView, this.getForumService().findById(model.getForumId()));
v.setForumView(forumView);
vlist.add(v);
}
}
return vlist;
}
public List<UserView> maybeFriends(int rows){
int pages = TypeChange.stringToInt(ParamUtils.getCookieValue(request,"maybeFriendsPages","0"));
SearchParameter param = new SearchParameter();
if(pages>0){
page = (int)(Math.random()*(pages));
}
param.setPage(new Integer(page));
param.setRows(new Integer(rows));
param.setIp(request.getRemoteAddr());
List<String> ipaddress = IPSeeker.getInstance().IPParser(param.getIp());
if(!Validator.isEmpty(ipaddress)){
param.setKeys(ipaddress.get(0));
}
User user = UserLogin.getUser(request);
if(user!=null){
if(user.getSex()==1){
param.setSex("2");
}else if(user.getSex()==2){
param.setSex("1");
}
}
searcher = SearchFactory.getInstance(SearchProvider.SEARCH_USER);
List<User> mlist = searcher.results(param);
if(pages==0){
int totalrows = searcher.getTotalrows();
pages = totalrows/rows;
if(totalrows%rows!=0){
pages++;
}
ParamUtils.setCookieValue(response,"maybeFriendsPages",String.valueOf(pages),100);
}
List<UserView> list = new ArrayList<UserView>();
if(!Validator.isEmpty(mlist)){
for(int i=0; i<mlist.size(); i++){
User model = mlist.get(i);
UserView view = new UserView();
BeanUtils.copyProperties(view, model);
list.add(view);
}
return list;
}
else{
return null;
}
}
public AProfileForm getAProfileForm(){
AProfileForm form = (AProfileForm) request.getAttribute("AProfileForm");
if(Validator.isEmpty(form)){
form = new AProfileForm();
int userId = ParamUtils.getIntParameter(request,"userId",0);
User model = this.getUserService().findById(userId);
BeanUtils.copyProperties(form,model);
}
return form;
}
public EmailForm getEmailForm(){
EmailForm form = (EmailForm) request.getAttribute("EmailForm");
if(Validator.isEmpty(form)){
EmailBuild b = new EmailBuild(request);
form = b.build();
}
if(form.getTakerUserId()>0){
User user = this.getUserService().findById(form.getTakerUserId());
if(!Validator.isEmpty(user)){
form.setTaker(user.getUserName());
form.setTo(user.getEmailAddress());
}
}
return form;
}
public List<TopicView> findTopicsFromFavorite(int rows){
return this.findTopicsFromFavorite(UserLogin.getUserId(request),rows);
}
public List<TopicView> findTopicsFromFavorite(){
return this.findTopicsFromFavorite(UserLogin.getUserId(request),50);
}
public List<TopicView> findTopicsFromFavorite(int userId, int rows){
List<TopicView> list = null;
FavoriteParameter param = new FavoriteParameter();
param.setUserId(userId);
param.setRows(rows);
List<Topic> mlist = this.getFavoriteForumService().findTopic(param);
if(rows==0){
list = BeanUtils.<Topic,TopicView>copyList(mlist,BeanLocator.TOPICVIEW);
}else{
list = new ArrayList<TopicView>();
if(!Validator.isEmpty(mlist)){
F:for(int i=0; i<mlist.size(); i++){
Topic model = mlist.get(i);
TopicView view = new TopicView();
BeanUtils.copyProperties(view,model);
list.add(view);
if(list.size()==rows){
break F;
}
}
}
}
return list;
}
public List<TopicView> findMyTopicOfLastReplyed(int rows){
List<TopicView> list = null;
TopicParameter param = new TopicParameter();
param.setUserId(UserLogin.getUserId(request));
param.setPage(new Integer(1));
param.setRows(new Integer(rows));
param.setIsDeleted(new Boolean(false));
param.setOrderBy((byte)3); //按最后被回复排序
List<Topic> mlist = this.getTopicService().findByParameter(param);
list = BeanUtils.<Topic,TopicView>copyList(mlist,BeanLocator.TOPICVIEW);
return list;
}
public long countNewMessage(){
return this.getMessageService().countNewMessage(UserLogin.getUserId(request));
}
/**
*
* @param rows 显示的行数
* @return
*/
public List<TopicView> findTopicByUserId(int rows){
List<TopicView> list = null;
int userId = ParamUtils.getIntParameter(request,"userId",0);
int page = ParamUtils.getIntParameter(request,"page",1);
if(userId==0){
userId = UserLogin.getUserId(request);
}
if(userId==0){
request.setAttribute("message",MessageUtils.getMessage("error_notlogin"));
HttpServletUtils.forward(request,response,"/club/msg.jsp");
logger.debug("错误的参数 userId=0");
return null;
}else{
User user = this.getUserService().findById(userId);
userView = new UserView();
BeanUtils.copyProperties(userView,user);
TopicParameter param = new TopicParameter();
param.setRows(rows);
param.setUserId(userId);
param.setOrderBy((byte)2);
long total = this.getTopicService().countByParameter(param);
int lastpage = PaginationHelper.getLastpage(total,param.getRows());
if(page>lastpage){
page = lastpage;
}
param.setPage(page);
List<Topic> mlist = this.getTopicService().findByParameter(param);
list = BeanUtils.copyList(mlist,BeanLocator.TOPICVIEW);
StringBuffer url = new StringBuffer();
url.append(request.getRequestURI());
url.append("?userId=");
url.append(userId);
url.append("&page=");
this.setPagination(OutPrint.pagination(page, rows, total, url.toString(),5));
}
return list;
}
public List<ReplyView> findReplyByUserId(int rows){
int userId = ParamUtils.getIntParameter(request,"userId",0);
if(userId==0){
userId = UserLogin.getUserId(request);
}
TopicParameter param = new TopicParameter();
param.setPage(new Integer(1));
param.setRows(rows);
param.setUserId(new Integer(userId));
param.setOrderBy(new Byte((byte)2)); //order by replyId desc
List<Reply> mlist = this.getReplyService().findByParameter(param);
List<ReplyView> list = BeanUtils.copyList(mlist,BeanLocator.REPLYVIEW);
return list;
}
public List<UserView> findAll(int rows){
String userName = ParamUtils.getStringParameter(request, "userName", "");
userName = URL.urlDecoder(userName,"UTF-8");
userName = StringHelper.toUTF8(userName);
String ip = ParamUtils.getStringParameter(request, "ip", "");
int days = ParamUtils.getIntParameter(request,"days",-1);
page = ParamUtils.getIntParameter(request,"page",1);
orderBy = ParamUtils.getByteParameter(request,"orderBy",(byte)0);
UserParameter param = new UserParameter();
param.setPage(page);
param.setRows(rows);
param.setOrderBy(new Byte(orderBy));
param.setUserName(userName);
param.setRegIp(ip);
if(days!=-1){
String time = FormatDateTime.dateAdd(FormatDateTime.DAY_OF_MONTH,-days,"yyyyMMddHHmmss");
long ltime = TypeChange.stringToLong(time);
param.setLastLoginTime(ltime);
}
List<User> list = this.getUserService().findByParameter(param);
List<UserView> vlist = BeanUtils.copyList(list,BeanLocator.USERVIEW);
long total = this.getUserService().countByParameter(param);
StringBuffer url = new StringBuffer();
url.append(request.getRequestURI());
url.append("?userName=");
url.append(URL.urlEncoder(userName,"UTF-8"));
url.append("&ip=");
url.append(ip);
url.append("&days=");
url.append(days);
url.append("&page=");
this.setPagination(OutPrint.pagination(page, rows, total, url.toString(),5));
return vlist;
}
public UserView findOnly(){
UserView v = new UserView();
User m = null;
int userId = ParamUtils.getIntParameter(request,"userId",0);
if(userId==0&&!Validator.isEmpty(UserLogin.getUser(request))){
m = UserLogin.getUser(request);
userId = m.getUserId();
}
m = this.getUserService().findById(userId);
if(!Validator.isEmpty(m)){
BeanUtils.copyProperties(v,m);
}else{
HttpServletUtils.redirect(response,"404.html");
return null;
}
return v;
}
public UserView findByUserId(int userId){
UserView v = new UserView();
User m = this.getUserService().findById(userId);
if(!Validator.isEmpty(m)){
BeanUtils.copyProperties(v,m);
}else{
return null;
}
return v;
}
public List<ForumView> findFavoriteForums(){
int userId = ParamUtils.getIntParameter(request,"userId",0);
if(userId==0){
userId = UserLogin.getUserId(request);
}
List<Forum> mlist = this.getFavoriteForumService().findForumByUserId(userId);
List<ForumView> list = BeanUtils.<Forum,ForumView>copyList(mlist,BeanLocator.FORUMVIEW);
return list;
}
public UserView getUserView() {
return userView;
}
public void setUserView(UserView userView) {
this.userView = userView;
}
public String getPagination() {
return pagination;
}
public void setPagination(String pagination) {
this.pagination = pagination;
}
private UserService getUserService() {
return ServiceWrapper.<UserService>getSingletonInstance(ServiceLocator.USER);
}
private ReplyService getReplyService() {
return ServiceWrapper.<ReplyService>getSingletonInstance(ServiceLocator.REPLY);
}
private TopicService getTopicService() {
return ServiceWrapper.<TopicService>getSingletonInstance(ServiceLocator.TOPIC);
}
private FavoriteForumService getFavoriteForumService() {
return ServiceWrapper.<FavoriteForumService>getSingletonInstance(ServiceLocator.FAVORITEFORUM);
}
private MessageService getMessageService() {
return ServiceWrapper.<MessageService>getSingletonInstance(ServiceLocator.MESSAGE);
}
private ManageLogService getManageLogService() {
return ServiceWrapper.<ManageLogService>getSingletonInstance(ServiceLocator.MANAGELOG);
}
private ForumService getForumService() {
return ServiceWrapper.<ForumService>getSingletonInstance(ServiceLocator.FORUM);
}
public byte getOrderBy() {
return orderBy;
}
public void setOrderBy(byte orderBy) {
this.orderBy = orderBy;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?