SpringMVC

SpringMVC
springMVC如何介入程序?
1、MVC配置文件中要配置
<url-pattern>/</url-pattern>
    /:拦截一切请求
    /user:拦截以 /user开头的请求        <url-pattern>/user</url-pattern> <a href="/user/dmeo">...</a>
    .action: 拦截以.action结尾的请求    <url-pattern>/demo.action</url-pattern> 交给传统的Servlet处理
    /user/abc.do:只拦截该请求


    
学习注解:
@requestMapping();
映射时是找 注解 ()里面的内容可以和方法名类名不一致,可以写在类前面, 寻找时
<a href="springmvc/welcome"> nihao a </a>  从类里面找再找加welcome注解的方法
-页面跳转的方式是请求转发,

@requestMapping(“welcome”,method=RequestMethod.POST);    //只允许post请求,get请求会被拦截 无法访问
    通过method指定请求方式(get post delete put)
@requestMapping(“welcome”,method=RequestMethod.POST,params={"name=zs"});
    params={"name"}        //必须有 name 参数
    params={"name=zs"}  //必须有 name=zs 参数
    params={"name=zs","age!=13"}    设置拦截参数,可以有多个值,age可以判断
    params={"name=zs","age!=13","!hi"}    请求参数 name=zs,age!=13,不能有hi

@RequestMapping参数:
    value:
    params:
    header:
    method:
    
    
-约定请求头信息
@requestMapping(value=“welcome”,header={"Accept:xxxx","host:localhost"})    

-ant风格的请求路径
? 单字符
* 任意字符(0个或多个)
** 任意目录
@requestMapping(value=“welcome/**/demo”)    
    <a href="springmvc/welcome/abc/demo"> nihao a </a>
    
@requestMapping(value=“welcome/a?b/demo”)    
    <a href="springmvc/welcome/dsadsa/demo"> nihao a </a>

REST风格:软件编程风格

POST:增
DELETE:删
PUT:改
GET:查

delete、和put请求是通过过滤器 HiddenHttpMethodFilter 实现的
过滤的条件:
1、请求方式为post
2、 type属性字段=hidden name="_method" value delet或put
<input type="hidden" name="_method" value="delete/put">

要想有 delete 和 put请求 在web.xml配置 <filter>


-@RequestParam()            //接收前端传来的值
String name = request.getParameter("name")
    等价于
@RequestParam("name")

实例:
    @RequestMapping(value="jieshao2_get",method = RequestMethod.GET)
    public String jieshao2_get(@RequestParam("zs") String id){
        System.out.println(id+"查了");
        return "nihao";
@RequestParam(value="zs")
属性:
value:@RequestParam(value="zs")
required:这个参数是否是必须的    @RequestParam(value="zs",required="false")
defaultValue:默认值                @RequestParam(value="zs",required="false",defaultValue="23")

-@RequestHeader            //获取请求头信息
    @RequestHeader("Accept-Lanauge")
-@CookieValue            //获取Cookie的值

@CookieValue("JSESSIONID") String value

-原生Servlet API
    public void Test(HttpServlet request HttpServlet response)
    {
        request.getParameter()
    }

-可以给一个javaBean全部赋值


6 页面跳转带数据可以有以下几种方式:ModelAndView(用的最多)、ModelMap、Map、Model
ModelAndView 既有数据又有视图,页面跳转到前端的时候把数据传过去,数据在request域
ModelMap
Map
Model
放入session域,加注解@SessionAttributes()在类前面加
@SessionAttributes(value="student1,student2")    
    //若在request域中存放student1,student2类型的对象,则在session域中也存放该对象
@SessionAttributes(type="{Student.class,Address.class}")    
    //若在request域中存放student1,student2类型的对象,则在session域中也存放该类型的对象


-@ModelAttribute(“stu”,student)        //查询时一般用这个
    删之前查一下
    更新使用
    插入代码
    在请求该类的各个方法前 均备执行

-视图解析器
视图 InternalResourceView 它的一个子类JstlView
视图解析器 ViewResolver
国际化:
    a创建资源文件

视图解析器功能:
1 index.jsp 直接到 success.jsp 不需要经过collenter
<mvc:view-controller path="(springmvc/testViewController)前端请求的servlet" view="nihao(跳转的页面)"> 

2指定请求方式:
    redirect: forward:
    
2 <mvc:annotation-driven></mvc:annotation-driven>
springmvc基础配置,该注解可以让<mvc:viewController>共存

3处理静态资源:
    <mvc:default-servlet-handler>
    这个标签可以让一个没有springmvc @requestMapping 处理的servlet,使用tomcat默认的servlet来处理

4指定跳转方式:return "forward:/views/nihao.jsp"
            redircet: 重定向 forward:请求转发,有这个标识不会自动加前缀、后缀。

5 类型转换:
    自带一些类型转换器 string ->int
    自定义类型转换器:
        1 编写自定义类型转化器(实现一个Converter接口)
        2 spring.xml配置
        3 测试

6 数据格式化
    实例:new SimpleDataFormat("yyyy-MM-dd hh:mm:ss")
springmvc有很多注解来实现数据格式化,
Number

7 错误消息处理(没细看)

8 数据校验(注解)第10集没看
    JSR303
    Hibernate Validator
        jar包:hibernate-Validator.jar classmate.jar jobss-logging.jar vaildatetion-api.jar  hibernate-Validator-annotation-process.jar
9 ajax请求springmvc调返回json数据

10 MVC文件上传
jar包 commons-io.jar
    实现MultipartResolver接口,commonsMultipartResolver
步骤:
    1、jar
    2、commonsMultipartResolver 加入ioc容器
    3、
11 Spingmvc实现拦截器:
    1、实现一个接口HandlerInterceptor
    2、实现 preHandle()    postHandle()    afterCompletion()方法
        preHandle():拦截请求
        postHandle():拦截响应
        afterCompletion():客户端渲染完毕(图片,文字都显示)触发这个函数
    3、配置拦截器
12异常处理    
    加一个异常注解@ExceptionHandler 相当于catch
    @ExceptionHandler标识的参数只能是 Throwable或其子类,不能包含其他类型参数
    捕获最近的异常。
    @ControllerAdvice 这个注解写在类前面,表明这个类可以处理其他类中发生的异常

    ResponseStatusExceptionResolver:自定义异常显示界面(可以修改著名的 404 页面), @ResponseStatus 写在类前面或方法前面

    //自定义异常类
    @ResponseStatus(value=HttpStatus.FORBIDDEN,reason="数组越界异常")
    public class testMyException extends Exception{
        .....
    }
    
JstlView 国际化操作:
1、创建资源文件
    有一个命名规范  基名_ZH_
             

    

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值