springMVC结合jackson使用demo

本文介绍了如何在Spring MVC项目中集成Jackson 1.x版本进行JSON数据处理,并展示了具体的配置方法、控制器示例及简单的用户登录流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、jackson的1.x版本jar

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.9.12</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-lgpl</artifactId>
        <version>1.9.12</version>
    </dependency>

2、spring-servlet.xml中添加转换器

<!--start:使用Jackson 1.x的配置,需要导入的jar包:jackson-core-lpgl-xxx.jar、jackson-mapper-lgpl-xxx.jar -->
    <bean  
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
        <property name="messageConverters">  
            <list>  
                <bean  
                    class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />  
<!--                 <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>  2.x替换MappingJacksonHttpMessageConverter -->
                <bean  
                    class="org.springframework.http.converter.StringHttpMessageConverter">  
                    <property name="supportedMediaTypes">  
                        <list>  
                            <value>text/plain; charset=UTF-8</value>  
                        </list>  
                    </property>  
                </bean>  
            </list>  
        </property>  
    </bean> 

3、jsp代码
index.jsp

    <div style="margin: 0 atuo; padding-top: 100px; font-size: 18px;" align="center">
        <p><a href="login.html">登陆系统</a></p>
    </div>

login.jsp

    <div style="margin: 0 atuo; padding-top: 100px; font-size: 18px;" align="center">
        <form action="doLogin.html" method="post">
            <p>
                用户名:<input name="username" type="text">
            </p>
            <p>
                密&nbsp;&nbsp;码:<input name="password" type="password">
            </p>
            <p>
                <input type="submit">
            </p>
        </form>
    <font color="red">${error}</font>
    </div>

success.jsp

    <div style="margin: 0 atuo; padding-top: 100px; font-size: 18px;" align="center">
        <h1 >${user.username}登陆成功</h1>
        <a href="doLogout.html">退出登陆</a>
    </div>

4、java代码
bean包下User.java

    private String username;
    private String password;
    ... // get set省略

controller包下
UserController.java

@Controller
@SessionAttributes("user")
public class UserController {
    // 登陆页面url
    public static final String loginUrl = "/WEB-INF/jsp/login.jsp";
    // homePage url
    public static final String homeUrl = "/WEB-INF/jsp/success.jsp";

    @Resource
    UserService userService;

    @RequestMapping("login")
    public ModelAndView toLogin(){
        return new ModelAndView(loginUrl);
    }

    @RequestMapping(value = "doLogin", method = RequestMethod.POST)
    public String doLogin(@RequestParam String username, @RequestParam String password, HttpServletRequest request, ModelMap moMap){
        try {
            User user = userService.doLogin(username, password);
            moMap.put("user", user);// SessionAttributes注解需要配合ModelMap使用
        } catch (Exception e) {
            request.setAttribute("error", e.getMessage());
            return loginUrl;// 视图名称
        }
        return homeUrl;// 视图名称
    }

    @RequestMapping(value = "doLogout")
    public ModelAndView doLogout(SessionStatus status){
        status.setComplete();
        return new ModelAndView(loginUrl);// 视图
    }

}

JsonController.java

    @ResponseBody
    @RequestMapping("getJson")
    public User getUserInfo(){
        User user = new User();
        user.setUsername("admin");
        user.setPassword("123");
        return user;
    }

PathVariableController.java

    @ResponseBody
    @RequestMapping("pathvar/{username}")
    public User test1(@PathVariable String username){
        User user = new User();
        user.setUsername(username);
        return user;
    }

    @ResponseBody
    @RequestMapping("pathint/{intval}")
    public User test1(@PathVariable Integer intval){
        User user = new User();
        user.setUsername(intval + "");
        return user;
    }

5、service层

    public User doLogin(String username, String password) throws Exception{
        if(username == null || "".equals(username)){
            throw new Exception("用户名不能为空!");
        }

        if(password == null || "".equals(password)){
            throw new Exception("密码不能为空!");
        }

        User user = userDao.queryUserByUsername(username);
        if(user == null){
            throw new Exception("用户名不存在!");
        }

        if(!"123".equals(password)){
            throw new Exception("用户名或密码不正确!");
        }
        return user;
    }

6、dao层


    public User queryUserByUsername(String username){
        if(!"admin".equals(username)){
            return null;
        }
        User user = new User();
        user.setUsername("admin");
        user.setPassword("123");
        return user;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值