SpringMVC常用注解及参数绑定(02)

一、SpringMVC常用注解:

(1)、@Controller:如果不加该注解说明只是一个普通的bean,作用在类上面才声明该类是一个控制器。

(2)、@RequestMapping

        如果作用在类上面:可以起到窄化请求映射的作用;

        如果作用在方法上面:指定url到请求方法的映射。常用value和method属性,其中method常用get和post两种请求方式。

        如果没有指明请求方式,则默认可以使用任何的http请求方式。

(3)、@RequestParam:将请求中的参数绑定到方法中的形参。

(4)、@PathVariable:用于restful风格的url,将url中{userId}的userId绑定到方法中的形参。@PathVariable中的变量名称             要和RequestMapping中的变量名称相同。

(5)、@RequestBody:将json转换为object对象pojo。

(6)、@ResponseBody:将object对象pojo转换为json。

(7)、@Autowired:按照类型注入。例如:把service注入到Controller中去。

(8)、@Resource:按照名称注入。把service注入到Controller中去。如果一个接口有多个实现类的话要用该注解。

(9)、@ModelAttribute:将请求参数绑定到model对象中.(开发中一般不用,麻烦)

(10)、@SessionAttribute:只能作用在类上面,允许我们有选择的将Model中的哪些属性转存到HttpSession对象中。

(11)、@CookieValue:将请求的cookie绑定到方法中的形参。例如:JSESSIONID。

(12)、@RequestHeader:将请求头绑定到方法中的形参。

二、SpringMVC参数绑定

    (1)、默认的参数绑定:HttpServletRequest、HttpServletResponse、HttpSession、Model。意思是说在Controller方法参数中可以加入这些,也可以不加,加不加看自己需求而定。

    (2)、基本数据类型:包括String类型。SpringMVC可以直接接收基本数据类型,可以帮你自动进行类型转换。但形参名称要和页面的input框中的name属性值相同。

    (3)、Pojo类型:SpringMVC可以直接接受pojo类型,但要求页面上input框的属性值要和pojo属性值相同。

    (4)、Pojo的包装类VO类型:SpringMVC可以直接接收VO类型:但要求input输入框的属性值要等于vo的属性.属性.属性...

     (5)、自定义参数绑定:

/**
 * S - source:源
 * T - target:目标
 * @author zj
 *
 */
public class CustomGlobalStrToDateConverter implements Converter<String, Date> {

    @Override
    public Date convert(String source) {
        try {
            Date date = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(source);
            return date;
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

}

在springmvc的核心配置文件中配置:

<!-- @Controller注解扫描 -->
    <context:component-scan base-package="cn.itheima.controller"></context:component-scan>
    
    <!-- 注解驱动:
            替我们显示的配置了最新版的注解的处理器映射器和处理器适配器 -->
    <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
    
    <!-- 配置视图解析器
    作用:在controller中指定页面路径的时候就不用写页面的完整路径名称了,可以直接写页面去掉扩展名的名称
    -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 真正的页面路径 =  前缀 + 去掉后缀名的页面名称 + 后缀 -->
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"></property>
    </bean>
    
    <!-- 配置自定义转换器
    注意: 一定要将自定义的转换器配置到注解驱动上
    -->
    <bean id="conversionService"
        class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <!-- 指定自定义转换器的全路径名称 -->
                <bean class="cn.itheima.controller.converter.CustomGlobalStrToDateConverter"/>
            </set>
        </property>

    </bean>

    (6)、数组:在VO中定义Integer[] ids。例如:批量删除。

    (7)、List集合:在VO中定义private List<Items> itemsList;例如:批量修改使用。

三、SpringMVC中Controller方法返回值。

    (1)、ModelAndView指定了模型和视图。

    (2)、void:形参可以使用request和response指定响应结果。      

                《1》、request.getRequestDispatcher("页面路径").forward(request, response);         

                《2》、response.sendRedirect("url");

                《3》、response.setCharacterEncoding("utf-8");

                response.setContentType("application/json;charset=utf-8");

                response.getWriter().write("json串");

    (3)、String:逻辑视图名。

                《1》、逻辑视图名。

                《2》、重定向:return "redirect:queryItem.action";

                             redirect方式相当于“response.sendRedirect()”,转发后浏览器的地址栏变为转发后的地址。

         因为转发即执行了一个新的requestresponse

         由于新发起一个request原来的参数在转发时就不能传递到下一个url

                《3》、请求转发:return "forward:editItem.action";                  

forward方式相当于“request.getRequestDispatcher().forward(request,response)”,转发后浏览器地址  栏还是原来的地址。转发并没有执行新的requestresponse,而是和转发前的请求共用一个requestresponse。所以转发前请求的参数在转发后仍然可以读取到。

相对路径和绝对路径:

//后面forward:itemEdit.action表示相对路径,相对路径就是相对于当前目录,当前为类上面指定的items目录.在当前目录下可以使用相对路径随意跳转到某个方法中
//后面forward:/itemEdit.action路径中以斜杠开头的为绝对路径,绝对路径从项目名后面开始算。

























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值