8.controller的实现-查看文章

8.controller的实现

发表于:2017-06-24 10:15:51 分类:博客源码 阅读:802次

image

写的时候太懒了,没有规划。。。

把所有的功能加入到了这两个控制器里,比较难看。

1.UserController

package top.ersredma.blog.controller;

import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import top.ersredma.blog.bean.Blog;
import top.ersredma.blog.bean.Essay;
import top.ersredma.blog.bean.KeyWord;
import top.ersredma.blog.bean.User;
import top.ersredma.blog.service.BlogService;
import top.ersredma.blog.service.UserService;
import top.ersredma.blog.utils.AppUtils;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.*;
import java.util.*;

/**
 * Created by ersredma on 2017/6/13.
 */
@Controller
@RequestMapping("/")
public class UserController {

    @Autowired
    UserService userService;
    @Autowired
    BlogService blogService;

    @RequestMapping("/home")
    public String home(HttpServletRequest request){
        LinkedHashMap<String,List<Essay>> top10=blogService.findTop10KeyWord();
        request.setAttribute("essayMap",top10);

        List<Essay> hotList= blogService.findHotTop();
        List<Essay> newList= blogService.findNewTop();
        List<Essay> likeList= blogService.findLikeTop();
        request.setAttribute("hotList",hotList);
        request.setAttribute("newList",newList);
        request.setAttribute("likeList",likeList);
        return "mainhome";
    }
    @RequestMapping("/blog")
    public String tohome(){
        return "mainhome";
    }
    @RequestMapping("/registerUI")
    public String registerUI(){
        return "user/register";
    }
    @RequestMapping("/mng/myInfoUI")
    public String myInfoUI(HttpSession session){
        User user=(User)session.getAttribute("USER");
        if(user==null){
            return "redirect:/loginUI";
        }
        return "user/myInfo";
    }

    @RequestMapping("/loginUI")
    public String loginUI(){
        return "user/login";
    }

    @RequestMapping(value = "/login",produces = "application/json;charset=UTF-8")
    @ResponseBody
    public Map<String,Object> login(User user, HttpSession session, HttpServletRequest request, HttpServletResponse response){
        // 一次验证码验证
        String checkcode = (String) session.getAttribute("key");
        // 清空获取过的验证码
        session.removeAttribute("key");
        boolean success=false;
        String msg="";
        String url="";
        if (!checkcode.equals(user.getCode())) {
            // 输入不一致
            msg="验证码输入错误,请重新输入!";
            url="/loginUI";
        } else {
            //加密密码
            AppUtils.enPassW(user);
            //检查用户邮箱与密码是否匹配
            User temp=userService.findUserByEmailAndPassword(user.getEmail(),user.getPassword());
            if(temp!=null) {

                success=true;
                Blog blog=blogService.findBlogByUser(temp);
                if(blog==null){
                    url="/mng/configUI";
                }else{
                    temp.setBlog(blog);
                    url="/blog/"+blog.getUrl();
                }
                //把用户写入Session,并返回博客配置页面
                session.setAttribute("USER", temp);
                msg="登陆成功!";

            }else{
                msg="用户名或密码错误,请重新输入!";
                url="/loginUI";
            }
        }
        Map<String, Object> map = new HashMap<>();
        map.put("success",success);
        map.put("msg",msg);
        map.put("url",url);
        return map;
    }


    @RequestMapping(value = "/register",produces = "application/json;charset=UTF-8")
    @ResponseBody
    public  Map<String,Object> register(User user, String code, HttpSession session, HttpServletRequest request){
        // 一次验证码验证
        String checkcode = (String) session.getAttribute("key");
        // 清空获取过的验证码
        session.removeAttribute("key");

        boolean success=false;
        String msg="";
        String url="";
        if (!checkcode.equals(code)) {
            // 输入不一致
            msg="验证码输入错误,请重新输入!";
            url="/registerUI";
        } else {
            //检查邮箱是否可用
            User temp=userService.findUserByEmail(user.getEmail());
            if(temp==null) {
                //加密密码
                AppUtils.enPassW(user);
                userService.createUser(user);
                success=true;
                msg="注册成功,去登陆!";
                url="/loginUI";
            }else{
                msg="该邮箱已注册,请重新输入!";
                url="/registerUI";
            }
        }
        Map<String, Object> map = new HashMap<>();
        map.put("success",success);
        map.put("msg",msg);
        map.put("url",url);
        return map;
    }

    @RequestMapping(value = "/mng/editMyInfo",produces = "application/json;charset=UTF-8")
    @ResponseBody
    public Map<String,Object> editMyInfo(HttpSession session, User user,HttpServletRequest request){
        boolean success=false;
        String msg="";
        String url="";
        User LoginUser=(User)session.getAttribute("USER");
        if(user!=null){
            user.setId(LoginUser.getId());
            if(user.getImg()!=null){
                user.setImg(user.getImg().substring(user.getImg().indexOf("/upload")));
                if(user.getImg().equals(LoginUser.getImg())){
                    user.setImg(null);
                }else{
                    if(LoginUser.getImg()!=null)
                    deleteFileForUrl(LoginUser.getImg(),request);
                }
            }
            int rs=userService.editUser(user);
            if(rs==1){
                success=true;
                msg="编辑成功!";
                url="/mng/myInfoUI";
                session.setAttribute("USER",userService.findUserByEmail(LoginUser.getEmail()));
            }else{
                msg="编辑失败,请重试!";
                url="/mng/myInfoUI";
            }
        }
        Map<String, Object> map = new HashMap<>();
        map.put("success",success);
        map.put("msg",msg);
        map.put("url",url);
        return map;
    }

    private void deleteFileForUrl(String url,HttpServletRequest request) {
        String filePath = request.getServletContext()
                .getRealPath("/");
        File file=new File(filePath+url);
        file.delete();
    }

    @RequestMapping(value = "/saveFile")
    @ResponseBody
    public synchronized String saveOrUpdate(HttpServletRequest request,HttpSession session){
        User user=(User) session.getAttribute("USER");
        String type = request.getParameter("type");
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        MultipartFile file = multipartRequest.getFile("file");// 获取上传文件名
        String mainPath="upload/";
        String filePath = request.getServletContext()
                .getRealPath(mainPath);
        String fileName = UUID.randomUUID().toString()
                .replaceAll("-", "")
                + "."+type;
        String path=filePath+"/user/"+user.getId()+"/"+fileName;
        System.out.println(path);
        // 复制文件
        try {
            InputStreamToFile(file.getInputStream(),path);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "/"+mainPath+"user/"+user.getId()+"/"+fileName;
    }
    private void InputStreamToFile(InputStream in,String filePath){
        try
        {
            File f=new File(filePath);
            //判断目标文件所在的目录是否存在
            if(!f.getParentFile().exists()) {
                //如果目标文件所在的目录不存在,则创建父目录
                System.out.println("目标文件所在目录不存在,准备创建它!");
                if(!f.getParentFile().mkdirs()) {
                    System.out.println("创建目标文件所在目录失败!");
                }
            }
            if (f.createNewFile()) {
                System.out.println("创建成功!");
            } else {
                System.out.println("创建失败!");
            }
            OutputStream out=new FileOutputStream(f);
            byte buf[]=new byte[1024];
            int len;
            while((len=in.read(buf))>0)
                out.write(buf,0,len);
            out.close();
            in.close();
        }
        catch (IOException e){}
    }

}


关键词:blog源码,控制器


验证码: