springmvc的视图解析器和返回jsp界面重定向的区别

首先视图解析器就是在访问完mapper之后,return一个字符串,这个字符串可以被视图解析器识别,从而返回相应的jsp界面,这个请求转发会带有当前控制层的方法指令,比如没收到值就话就会报空指针的错误。

1.在springmvc-servlet.xml下添加bean

<bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"
                  value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

2.一般视图解析器都是转发不带请求参数的指令,如果带有请求参数的话,可能会报空指针错误。

<body>
        <a href="/pro/success"></a>
</body>

3.调用控制层方式时,通过注解访问当方法,并且返回到jsp界面。

@Controller
@RequestMapping("/pro")
public class ProductController {

    @RequestMapping("/success")
    public String success(){
        return "b";
    }
    }

4.成功

二.重定向
如果是带有请求参数的指令,需要跳转到界面的话,就需要用到重定向操作,否则会报空指针的错误,比如我今天写的添加商品操作,本质上就是一个from表单的提交,这是一个带有参数的请求,所以最后跳转的时候需要用到重定向。

@Controller
@RequestMapping("/pro")
public class ProductController {
 @RequestMapping("/addOnePro")
    public String addOnePro(HttpServletRequest request,  MultipartFile file1) throws  IOException{
        Product product=new Product();
        String  pro_name = request.getParameter("pro_name");
        String pro_author = request.getParameter("pro_author");
        String pro_price = request.getParameter("pro_price");
        String pro_num = request.getParameter("pro_num");
        String pro_pnum = request.getParameter("pro_pnum");
        String pro_new = request.getParameter("pro_new");
        String pro_intro = request.getParameter("pro_intro");
        String path =  request.getServletContext().getRealPath("/")+"img\\"  +  file1.getOriginalFilename();
        file1.transferTo(new File(path));
        product.setPro_img("img\\" +  file1.getOriginalFilename());
        product.setPro_author(pro_author);
        product.setPro_intro(pro_intro);
        product.setPro_name(pro_name);
        product.setPro_new(pro_new);
        int num=Integer.parseInt(pro_num);
        int pnum=Integer.parseInt(pro_pnum);
        int price=Integer.parseInt(pro_price);
        product.setPro_num(num);
        product.setPro_pnum(pnum);
        product.setPro_price(price);
        ps.addOnePro(product);
        return "redirect:../product-list.jsp";
    }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值