intellij配置maven+SSM+redis(三)

来源:互联网 发布:linux fg命令 编辑:程序博客网 时间:2024/06/12 22:17

下面展示各个java类的编写实例:

1、controller包下的user包中的UserController,简单实现登录注册功能。

@Controllerpublic class UserController {    @Value("#{userManager}")    private IUserService userService;    @RequestMapping("verify_nick_name.do")    public voidverify_nick_name(HttpServletRequest request, HttpServletResponse response)throws IOException {        String username = (String)request.getParameter("nickname");       response.setContentType("text/plain");       response.setCharacterEncoding("utf-8");       if(userService.check_username(username) == true)           response.getWriter().write("ok");        else            response.getWriter().write("error");    }   @RequestMapping("user_login.do")    public ModelAndView user_login(User_user, HttpServletRequest request) throws IOException {        ModelAndView mav = newModelAndView();        User user = userService.user_login(_user);        if(user != null){            HttpSession session =request.getSession();           session.setAttribute("user", user);           session.setAttribute("userphoto", user.getUserphoto());           mav.setViewName("index");        }else{           mav.setViewName("login");        }        return mav;    }   @RequestMapping("log_out.do")    public ModelAndViewlog_out(HttpServletRequest request){       request.getSession().setAttribute("user", null);        ModelAndView mav = newModelAndView("index");        return mav;    }    //用户注册   @RequestMapping("user_register.do")    public ModelAndViewuser_register(User user, HttpServletRequest request) throws IOException {        ModelAndView mav = newModelAndView("register");       if(userService.user_register(user) == true){           mav.setViewName("login");        }else{           mav.addObject("reg_info", "注册失败");        }        return mav;    }} 


首先需要在类上进行注解标注@Controller,表示这个类为spring中的Controller,@RequestMapping(”xxx.do”)代表输入localhost:8080/xxx.do则会进入到这个函数,这是由之前配置的springMVC进行servlet分发处理的,所以在这个基础包下的controller都可以被装配识别。设置View的名字则可以进入相应的jsp,涉及到具体的逻辑。可以看到

@Value("#{userManager}")
private IUserService userService;

很明显这是一个Service层接口,包含了具体的实现,比如在数据库中添加一条记录属于具体实现,而在Controller中更应该注重业务逻辑,所以需要分层。@Value的含义是实现了这个service接口的类名称,在service中有一个impl包,实现service,需要给实现类起名字,这样的话就可以装配进入使用了。                                                                                                     

 

下面看一下service层的类编写:

IUserService.javapublic interface IUserService {    public boolean user_login(User user);    public boolean user_register(Useruser);}


提供Service接口,面向接口编程,屏蔽实现细节,在Controller中只需关注逻辑即可,代码中不包含与数据库的交互操作。

 

UserService.java@Service("userManager")@Transactionalpublic class UserService implements IUserService{    @Autowired    private IUserMapper userMapper;    public boolean user_login(User user){        User u1 =userMapper.getUserByName("2");        return false;    }    public boolean user_register(Useruser) {        return false;    }} 

@Service("userManager")的作用是标记此实现类名称为userManager,在Controller里面可以通过@Value引用这个实现类,可以看到在Service中注入一个mapper,所以可以看到是service与数据库进行交互而非controller,可以将逻辑和具体实现分隔开,可以搭建最基本的框架。

 

至此,框架搭建完毕并且也提供了一个小例子,见微知著,可以明白基本流程。

原创粉丝点击