栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-12-24 SpringMVC常用核心配置及注解使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-12-24 SpringMVC常用核心配置及注解使用

SpringMVC核心配置

文章目录
  • SpringMVC核心配置
      • 1.web.xml的配置
        • 1.1.配置SpringMvc前端控制器
        • 1.2.配置全局初始化参数
        • 1.3.配置监听器
      • 2.spring-mvc核心配置文件
        • 2.1.配置spring-mvc的组件扫描
        • 2.2.配置内部资源视图解析器
        • 2.3.配置springMvc注解驱动
        • 2.4.开放资源访问路径(二选一)
        • 2.5.配置文件上传解析器
      • 3.SpringMVC常用注解和对象的使用
      • 4.配置SpringMVC的全局异常处理器
      • 5.SpringMVC的自定义异常配置
        • 1.编写自定义异常
        • 2.实现HandlerExceptionResolver异常解析器接口
        • 3.将自定义异常配置到springmvc核心配置文件
      • 6.SpringMVC的拦截器
      • 7.SpringMVC核心配置文件总结

1.web.xml的配置 1.1.配置SpringMvc前端控制器
 
    
        DispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
            
            contextConfigLocation
            classpath:spring-mvc.xml
        
        
        1
    
    
        DispatcherServlet
        /
    
    
	
	
        charsetEncoding
        org.springframework.web.filter.CharacterEncodingFilter
    
        
            encoding
            UTF-8
        
        
            forceEncoding
            true
        
    
    
        charsetEncoding
        /*
    
1.2.配置全局初始化参数
    
        contextConfigLocation
        classpath:applicationContext.xml
    
1.3.配置监听器
    
    org.springframework.web.context.ContextLoaderListener
    

2.spring-mvc核心配置文件


  
2.1.配置spring-mvc的组件扫描
 
 
 
    
     

2.2.配置内部资源视图解析器
   
           
        

2.3.配置springMvc注解驱动





  
    
        
            
                
            
        
    
public class DateConverter implements Converter {
    @Override
    public Date convert(String datastr) {
        //将日期字符串转换成日期对象返回
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = dateFormat.parse(datastr);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return date;
    }
}

2.4.开放资源访问路径(二选一)
    
  


2.5.配置文件上传解析器
 
        
    

3.SpringMVC常用注解和对象的使用
@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService service;

    //value类名上的会拼接在方法名之前,参数为表达式,用来限定必须传入的参数
    @RequestMapping(value = "/quick",method = RequestMethod.GET,params = {"username"})
    public String save(){
        System.out.println("controller  save  running.......");
        service.save();
        return "success";
    }

    //通过模型视图对象
    @RequestMapping(value = "/quick2")
    public ModelAndView save2(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("username","张三");
        modelAndView.setViewName("success");
        return modelAndView;
    }

    //传参时框架会自动创建一个空的模型视图对象
    @RequestMapping(value = "/quick3")
    public ModelAndView save3(ModelAndView modelAndView){
        modelAndView.addObject("username","李四");
        modelAndView.setViewName("success");
        return modelAndView;
    }

    //也可单用数据模型
    @RequestMapping(value = "/quick4")
    public String save4(Model model){
        model.addAttribute("username","王五");
        return "success" ;
    }

    //可接收httpServlet对象,用request给作用域中存对象,此方法不常用
    @RequestMapping(value = "/quick5")
    public String save5(HttpServletRequest request){
        request.setAttribute("username","赵七");
        //return "success" ;
        //重定向
        return "redirect:/jsp/success.jsp";
    }

    //通过response响应数据
    @RequestMapping(value = "/quick6")
    public void save6(HttpServletResponse response) throws IOException {
        response.getWriter().print("王八");
    }

    //使用@ResponseBody直接响应json数据
    @RequestMapping(value = "/quick7")
    @ResponseBody
    public String save7() {
        return "{"age":"18"}";
    }

    //通过jackson包响应json数据
    @RequestMapping(value = "/quick8")
    @ResponseBody
    public String save8() throws IOException {
        User user = new User();
        user.setAge(18);
        user.setUsername("猴九");
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writevalueAsString(user);
        return json;
    }

    //使用@ResponseBody直接响应数据
    @RequestMapping(value = "/quick9")
    @ResponseBody
    public String save9(){
        return "success";
    }


    //通过配置mvc注解驱动或处理器适配器响应json数据
    @RequestMapping(value = "/quick10")
    @ResponseBody
    public User save10(){
        User user = new User();
        user.setAge(20);
        user.setUsername("猪十一");
        return user;
    }


    //直接请求数据要求参数名与传来的一致
    @RequestMapping(value = "/quick11")
    @ResponseBody
    public void save11(String username){
        System.out.println(username);
    }


    //对象username=xx&age=00;
    @RequestMapping(value = "/quick12")
    @ResponseBody
    public void save12(User user){
        System.out.println(user);
    }

    //数组username=xxx&username=xxx;
    @RequestMapping(value = "/quick13")
    @ResponseBody
    public void save13(String[] username){
        System.out.println(Arrays.asList(username));
    }

    //集合(需要封到对象中)
    @RequestMapping(value = "/quick14")
    @ResponseBody
    public void save14(Vo vo){
        System.out.println(vo);
    }

    //集合2
    @RequestMapping(value = "/quick15")
    @ResponseBody
    public void save15(@RequestBody List userList){
        System.out.println(userList);
    }

    //@RequestParam参数绑定注解,required指定请求的参数是否必须包括,默认为true,不包括会报错,defaultValue为没有指定请求参数时用默认值
    @RequestMapping(value = "/quick16")
    @ResponseBody
    public void save16(@RequestParam(value = "name",required = false,defaultValue = "itcast") String username){
        System.out.println(username);
    }

    //获取Restful风格参数
    //user/quick17/zhangsan
    @RequestMapping(value = "/quick17/{username}")
    @ResponseBody
    public void save17(@PathVariable(value = "username") String username){
        System.out.println(username);
    }

    //自定义日期转换类
    @RequestMapping(value = "/quick18")
    @ResponseBody
    public void save18(Date date){
        System.out.println(date);
    }

    //获取请求头,required是否必须携带此请求头
    @RequestMapping(value = "/quick19")
    @ResponseBody
    public void save19(@RequestHeader(value = "User-Agent",required = false)String user_agent){
        System.out.println(user_agent);
    }

    //获取cookie
    @RequestMapping(value = "/quick20")
    @ResponseBody
    public void save20(@cookievalue(value = "JSESSIONID")String jsessionId){
        System.out.println(jsessionId);
    }

    //文件上传
    @RequestMapping(value = "/quick21")
    @ResponseBody
    public void save21(String filename,MultipartFile uploadFile) throws IOException {
        System.out.println(filename);
        //获得文件名称
        String originalFilename = uploadFile.getOriginalFilename();
        //保存文件
        uploadFile.transferTo(new File("path"+originalFilename));
    }

    //多文件上传
    @RequestMapping(value = "/quick22")
    @ResponseBody
    public void save22(String filename,MultipartFile [] uploadFile) throws IOException {
        System.out.println(filename);
        for (MultipartFile multipartFile : uploadFile) {
            String originalFilename = multipartFile.getOriginalFilename();
            multipartFile.transferTo(new File("path"+originalFilename));
        }
    }

}

4.配置SpringMVC的全局异常处理器

springmvc核心配置文件配置

   
    
        
        
        
            
                
                
            
        
    
5.SpringMVC的自定义异常配置 1.编写自定义异常
@Component
public class MyException extends Exception  {
}

2.实现HandlerExceptionResolver异常解析器接口
public class MyExceptionResolver implements HandlerExceptionResolver {

    //参数Exception 异常对象
    //ModelAndView 异常跳转到的错误页面
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {

        ModelAndView modelAndView = new ModelAndView();
        if(e instanceof MyException){
            modelAndView.addObject("info","自定义异常");
        }else if(e instanceof ClassCastException){
            modelAndView.addObject("info","数据类型转换异常");
        }else{
            modelAndView.addObject("info","其他类型异常");
        }
        modelAndView.setViewName("error");
        return modelAndView;
    }
}

3.将自定义异常配置到springmvc核心配置文件

    
6.SpringMVC的拦截器

实现HandlerInterceptor接口

public class MyInterceptor2 implements HandlerInterceptor {

    //在目标方法执行之前执行,返回值false表示不放行,true为放行
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle222........");
            return true;
    }

    //在目标方法执行之后,视图返回之前执行
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle222......");
    }

    //在所有流程都执行完毕之后执行
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion222......");
    }
}

7.SpringMVC核心配置文件总结

1.web.xml

  
    
        DispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
            
            contextConfigLocation
            classpath:spring-mvc.xml
        
        
        1
    
    
        DispatcherServlet
        /
    

    
    
        contextConfigLocation
        classpath:applicationContext.xml
    

    
    
        org.springframework.web.context.ContextLoaderListener
    

springmvc核心配置文件

 
   
    
        
    

    
    
        
        
        
        
    

    
   

    
    


    
   
 
 

    


    
    
        
            
                
            
        
    

    
    
        
        
    

  
    
        
        
        
            
                
                
            
        
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/677683.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号