SpringMVC

SpringMVC,第1张

SpringMVC springmvc实现

web.xml




    
        springmvc
        org.springframework.web.servlet.DispatcherServlet

        
            contextConfigLocation
             classpath:springmvc-servlet.xml
        
    



    
        springmvc
        /
    


resource下的springmvc-servlet.xml





    

    

    
        
        
    

    

HelloController.java

package com.cling.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mv = new ModelAndView();
//业务处理
        String rs = "HelloSpringMVC";
        mv.addObject("msg",rs);
//返回视图
        mv.setViewName("test");
        return mv;
    }
}

test.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


${msg}



2、使用注解实现

web.xml



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

springmvc-servlet.xml


    

    

    

    

    
        
        
    

HelloController.java

package com.cling.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

//相当于在xml中注册
@Controller
//匹配请求路径
@RequestMapping("/hello")
public class HelloController {
//    匹配请求的路径,是上面路径的一个子路径
    @RequestMapping("/h1")
    public String hello(Model model){
//        数据的封装
        model.addAttribute("msg","HelloSpringMVC");
//        返回视图层的页面名字
        return "test";
    }
}

test.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


${msg}


3、RestFul风格

RestFul.java

@Controller
public class RestFul {
    @GetMapping("/add/{a}/{b}")
    public String test(@PathVariable int a, @PathVariable int b, Model model){
        int rs = a + b;
        model.addAttribute("msg","result:"+rs);
        return "test";
    }
}
4、乱码问题 1、可以使用自己写的过滤器

EncodingFilter.java

package com.cling.filter;

import javax.servlet.*;
import java.io.IOException;

public class EncodingFilter implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("utf8");
        servletResponse.setCharacterEncoding("utf8");
        filterChain.doFilter(servletRequest,servletResponse);
    }

    public void destroy() {

    }
}

web.xml

    
        encodingFilter
        com.cling.filter.EncodingFilter
    
    
        encodingFilter
        /*
    
2、使用springmvc的过滤器

web.xml

    
        encodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
    
    
        encodingFilter
        /*
    

3、 1、json中的乱码处理方式一

JsonController .java

@Controller
public class JsonController {
    @ResponseBody
    @GetMapping(value = "/j1",produces = "application/json;charset=utf-8")		//设置utf-8
    public String json1() throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        User user = new User("cling",12,"男");
        String str = mapper.writevalueAsString(user);
        return str;
    }
}
2、json乱码处理方式二

springmvc-servlet.xml

    
    
        
            
            
                
            
            
            
                
            
        
    
5、Jackson的使用 1、导入依赖
        
            com.fasterxml.jackson.core
            jackson-databind
            2.9.1
        
2、创建实体类

User.java

package com.cling.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String name;
    private int age;
    private String sex;
}

3、Jackson的使用 1、将对象转为json字符串

JsonController.java

package com.cling.controller;

import com.cling.pojo.User;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


//@RestController,类上使用这个注解,下面的所有方法都是返回接送字符串
@Controller
public class JsonController {
    //@ResponseBody注解使它直接返回一个Jason到当前的页面,而不用跳转试图
    @ResponseBody
    //使用原生的方式解决json乱码
    @RequestMapping(value = "/j1",produces = "application/json;charset=utf-8")
    public String json1() throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        User user = new User("cling",12,"男");
        String str = mapper.writevalueAsString(user);
        return str;
    }
}
2、链表转json
    @ResponseBody
    @RequestMapping("/t2")
    public String json2() throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        ArrayList userList = new ArrayList();
        User user = new User("cling",12,"男");
        User user1 = new User("cling1",12,"男");
        User user2 = new User("cling2",12,"男");
        User user3 = new User("cling3",12,"男");
        userList.add(user);
        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        String str = mapper.writevalueAsString(userList);
        return str;
    }
3、时间转json(需要先把时间戳转为标准的格式)
   @ResponseBody
    @RequestMapping("/t3")
    public String json3() throws JsonProcessingException {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-hh HH:mm:ss");
        String timeOut = simpleDateFormat.format(date);
        ObjectMapper mapper = new ObjectMapper();
        String str = mapper.writevalueAsString(timeOut);
        return str;
    }

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5677934.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存