SpringMVC使用

一.springMVC基础

1.使用@RequestMapping映射请求

@RequestMapping可以作用在类和方法上面,请求路径为类的value+方法的value

2.@RequestMapping处理不同提交方式

@RequestMapping(value = “/update”,method = RequestMethod.POST)
@RequestMapping(value = “/update”,method = RequestMethod.GET)

3.params简单的表达式

– param1: 表示请求必须包含名为 param1 的请求参数
– !param1: 表示请求不能包含名为 param1 的请求参数
– param1 != value1: 表示请求包含名为 param1 的请求参数,但其值
不能为 value1
@RequestMapping(value = “/update”,method = RequestMethod.GET,params = {“userid”,”age=10”,”city!=1”})

4.@RequestMapping多路径请求

映射路径可以填写多个,多个访问都能被绑定到一个方法
@RequestMapping(value = {“/hello”,”/good”})

5.@PathVariable 映射 URL绑定的占位符

user.shtml?userid=123
@RequestMapping(value = “/delete/{id}”)
public String deleleUser(@PathVariable(value = “id”)Long id){
System.out.println(“要删除的用户的ID是”+id);
return HELLO;
}

6.@RequestParam 绑定请求参数值
  • alue:要接收的参数名
  • required:该参数是否是必须的
  • defaultValue:如果参数为空,则给它默认值
    @RequestMapping(value =”/list”)
    public String list(@RequestParam(value = “page”,required = false,defaultValue = “1”)Integer page){
    System.out.println(“当前页是第”+page+”页!”);
    return HELLO;
    }
7.@RequestHeader 绑定请求报头的属性值
  • value:要接收的属性名
  • required:该属性是否是必须的
  • defaultValue:如果属性为空,则给它默认值
    @RequestMapping(value =”/list”)
    public String list(@RequestHeader(value = “Accept-Language”,required = false,defaultValue = “zh-CN”)String AcceptLanguage){
    System.out.println(“AcceptLanguage:”+AcceptLanguage);
    return HELLO;
    }
  • value:要接收的Cookie名
  • required:该Cookie名是否是必须的
  • defaultValue:如果该Cookie为空,则给它默认值
    @RequestMapping(value = “/cookie”)
    public String cookieinfo(@CookieValue(value = “JSESSIONID”,required = false,defaultValue = “ABCDEFG”)String jssionid){
    System.out.println(jssionid);
    return HELLO;
    }
9.POJO参数绑定

Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。
@RequestMapping(value = “/add”,method = RequestMethod.POST)
public String add(Item item){
System.out.println(item);
return “item_add”;
}

10.List集合绑定
 前端:
    <div>
      1号店铺名称:<input type="text" name="shops[0].shopname" /><br>
    </div>
    <div>
      2号店铺名称:<input type="text" name="shops[1].shopname" /><br>
   </div>

二:Controller方法返回值

1.ModelAndView
    @RequestMapping(value = "/add",method = RequestMethod.POST)
    public ModelAndView add(Item item, ModelAndView modelAndView){
        System.out.println(item);
       //数据模型
        List<Item> items = new ArrayList<Item>();
        items.add(new Item(1l,"戴尔笔记本",1999l));
        items.add(new Item(2l,"华为手机",1998l));
        //将数据添加到modeandview
        modelAndView.addObject("items",items);
        //设置视图
        modelAndView.setViewName("item_list");
       return modelAndView;
     }
      前端通过EL表达式取值:
       <c:foreach  items="${items}" var="item"> 
2.Model
    @RequestMapping(value = "/add",method = RequestMethod.POST)
    //public ModelAndView add(Item item, ModelAndView modelAndView){
    public String add(Item item, Model model){
        System.out.println(item);
       //数据模型
        List<Item> items = new ArrayList<Item>();
        items.add(new Item(1l,"戴尔笔记本",1999l));
        items.add(new Item(2l,"华为手机",1998l));
        //将数据添加到modeandview
        model.addAttribute("items",items);
         //设置视图---model可以直接返回视图名字
         return "item_list";
     }
4.Void-ServletAPI

—- 1.HttpServletRequest
页面的跳转还可以用servletAPI,返回值为void
@RequestMapping(value = “/world”)
public void world(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(“这是我的第一个入门案例……”);
request.getRequestDispatcher(“/WEB-INF/view/hello.jsp”).forward(request,response);
}
—-2.HttpServletResponse
@RequestMapping(value = “/world”)
public void world(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(“这是我的第一个入门案例……”);
response.sendRedirect(“/user/hello.shtml”);
}
—-3.直接返回视图
@RequestMapping(value = “/hellopage”)
public String hellopage(){
return “hello”;
}
—-4.redirect
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
@RequestMapping(value = “/world”)
public String world(){
return “redirect:/user/hello.shtml”;
}
—-5.forward
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
@RequestMapping(value = “/world”)
public String world(){
//return “redirect:/user/hello.shtml”;
return “forward:/WEB-INF/view/hello.jsp”;
}

三.2.日期格式转换

提交Date字符串数据格式的时间转成Date类型

方法一

在实体Bean上添加@DateTimeFormate,添加时间格式
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
private Date registerDate;

方法二

该方法可以写在base类里,需要的类基础base类,或者直接写在需要的类里
@InitBinder
protected void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}

四.JSON数据交互

需要加入的jar包
这里写图片描述
创建响应JSON数据的方法,直接return T即可,在方法上加上@ResponseBody

五.文件上传

第一步:springmvc.xml配置文件上传解析器


第二步:后台实现
 @RequestMapping(value = "/add")
 public String uplod(@RequestParam("addfile")MultipartFile file){
    file.transferTo(new File("g:/a.jpg"));
    return "ok";
}

六.拦截器配置

Springmvc拦截器需要实现HandlerInterceptor接口,并且实现里面三个方法。
          <!-- 配置拦截器 -->
        <mvc:interceptors>
            <mvc:interceptor>
                <!-- 拦截路径 -->
                <mvc:mapping path="/admin/**"/>
                <!--自定义拦截器的bean  id-->
                <ref bean="logInterceptor" />
            </mvc:interceptor>
        </mvc:interceptors>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值