springmvc中model,HttpServletRequest,modelandview区别

model

Model是一个接口
Model只是用来传输数据的,并不会进行业务的寻址
Model是每一次请求都必须会带着,不需要去new
model是request级别的

@RequestMapping("/login")
public String login(String name , String pwd, Model model){
    String status="MODEL";
        model.addAttribute("status",status);
        return "Sucees";
}

HttpServletRequest

request.getRequestURL 返回客户端请求时的完整URL
request.getQueryString 返回请求行中的参数部分
request.getPathInfo 返回请求URL中的额外路径信息
request.getRemoteAddr 返回发出请求的客户机的IP地址
request.getRemoteHost 返回发出请求的客户机的完整主机名
request.getRemotePort 返回客户机所使用的网络端口号
request.getLocalAddr 返回WEB服务器的IP地址
request.getLocalName 返回WEB服务器的主机名

@RequestMapping("/login")
public String login(HttpServletRequest request){
    String status="HTTPSERVLETREQUEST";
        request.setAttribute("status",status);
        return "Sucees";
}

modelandview

ModelAndView是一个类,内部聚合了ModelMap类;ModelMap又继承自LinkedHashMap
ModelAndView包含model和view两部分,使用时需要自己实例化,利用ModelMap用来传值,也可以设置view的名称
ModelAndView是需要我们自己去新建的,每次都需要new

//modelAndView存储数据使用setViewName()和getModel().put()方法封装数据
@RequestMapping("/login")
public ModelAndView login(ModelAndView modelAndView){
    String status="MODELANDVIEW";
    	//返回的页面 
    	modelAndView.setViewName("page");
        modelAndView.getModel().put("status",status);
        return modelAndView;
}

request.setAttribute()属于页面之间的传值,从a.jsp到b.jsp一次传递,之后这个request就会失去他的作用范围,再传就要重新设一个request.setAttribute()。(使用session.setAttribute()会在一个过程中始终保持这个值)

你可能感兴趣的:(java,servlet,前端)