Spring Controller 编写 示例

来源:互联网 发布:科力达全站仪传输软件 编辑:程序博客网 时间:2024/06/07 05:15

Spring Controller 编写 示例

package com.eduoinfo.finances.bank.web.controller;import java.io.IOException;import java.io.OutputStream;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.core.io.ClassPathResource;import org.springframework.http.HttpEntity;import org.springframework.stereotype.Controller;import org.springframework.util.Assert;import org.springframework.util.FileCopyUtils;import org.springframework.web.bind.annotation.CookieValue;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestHeader;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import com.eduoinfo.finances.bank.core.entity.JsonResult;import com.eduoinfo.finances.bank.web.dao.TestMapper;import com.eduoinfo.finances.bank.web.model.Test;import com.eduoinfo.finances.bank.web.model.User;import com.eduoinfo.finances.bank.web.service.impl.TestServiceImpl;/** * Spring MVC Controller 编写示例 *  * @author StarZou * @since 2014年4月26日 上午11:02:20 **/@Controller@RequestMapping(value = "/test")public class TestController {    /**     * Service 业务层 注入     */    @Resource    private TestServiceImpl testServiceImpl;    /**     * Dao 注入     */    @Resource    private TestMapper testMapper;    /**     * 通过注解绑定 参数值 示例     *      * @PathVariable : 从url 中 取得 参数值     * @RequestHeader : 从请求头中 取得 参数值     * @RequestParam : 从请求参数中 取得 值     * @CookieValue : 从 cookie 中取值     */    @RequestMapping("/**/{id}")    @ResponseBody    public String testValue(@PathVariable("id") String id, @RequestHeader("User-Agent") String userAgent,            @RequestParam(value = "name", defaultValue = "null", required = false) String name, @CookieValue("JSESSIONID") String jsessionid) {        return userAgent + "<br>" + jsessionid + "<br>" + id + "<br>" + name;    }    /**     * 使用Servlet API对象作为入参     *      * @param request     * @param response     */    @RequestMapping("/request")    public void req(HttpServletRequest request, HttpServletResponse response) {        Assert.notNull(request, "请求不能为空");        response.setStatus(200);    }    /**     * 使用IO对象作为入参     *      * @param os     * @throws IOException     */    @RequestMapping("/stream/{path}")    public void img(OutputStream os, @PathVariable("path") String path) throws IOException {        ClassPathResource res = new ClassPathResource("/spring-mvc.xml");        FileCopyUtils.copy(res.getInputStream(), os);    }    /**     * 表单提交 示例,bean的属性 自动 装配 <br>     * 指定方法类型:method = RequestMethod.POST <br>     * http://localhost/test/rest/test/body?name=starzou&password=123     *      * @param user     * @return     */    @RequestMapping(value = "/body")    @ResponseBody    public Object body(User user) {        return user;    }    /**     * httpEntity.getHeaders() 得到所有请求头     *      * @param httpEntity     * @return     */    @RequestMapping("/http")    @ResponseBody    public Object http(HttpEntity<String> httpEntity) {        return httpEntity.getHeaders().entrySet();    }    /**     * 调用 业务层 方法示例     *      * @return     */    @RequestMapping("/date")    @ResponseBody    public String date() {        return testServiceImpl.date();    }    /**     * Spring MVC将匹配方法参数名URI模板变量名称     *      * @param x     * @param y     * @return     */    @RequestMapping("/var/{x}/{y}")    @ResponseBody    public String var(@PathVariable String x, @PathVariable String y) {        return x + "<br>" + y;    }    /**     * 测试 mybaits generator生成的 dao model,进行 数据库操作     *      * @return     */    @RequestMapping("/tt/add")    @ResponseBody    public Object testAdd() {        com.eduoinfo.finances.bank.web.model.Test test = new com.eduoinfo.finances.bank.web.model.Test();        final long currentTimeMillis = System.currentTimeMillis();        test.setTname("tname : " + currentTimeMillis);        test.setTdate(new Date());        testMapper.insert(test);        return test;    }    /**     * 数据库 查询     *      * @return     */    @RequestMapping("/tt/select")    @ResponseBody    public Object testSelect() {        final List<Test> list = testMapper.selectByExample(null);        return list;    }    /**     * 测试 spring mvc 返回 json , 封装 Json 格式数据, 减少 类型转换     *      * @return     */    @RequestMapping("/json")    @ResponseBody    public JsonResult<Object[]> returnJson() {        // 实际情况 下 String,可能是一个 自定义的Java 类,比如 User , 通常是在 数据库查询        List<String> data = new ArrayList<>();        Set<String> data2 = new HashSet<>();        Map<String, String> data3 = new HashMap<>();        int i = 0;        while (i < 10) {            String value = "data-" + (++i);            data.add(value);            data2.add(value);            data3.put(value, value);        }        // 组装 查询的 结果 , 添加消息 和 是否成功的标识        JsonResult<List<String>> jsonResult = new JsonResult<>(data, "This is a message.", true);        JsonResult<Set<String>> jsonResult2 = new JsonResult<>(data2, "This is a message.", true);        JsonResult<Map<String, String>> jsonResult3 = new JsonResult<>(data3, "This is a message.", true);        // 复杂一点的 封装        Object[] objs = { jsonResult, jsonResult2, jsonResult3 };        JsonResult<Object[]> jsonObj = new JsonResult<Object[]>(objs);        return jsonObj;    }}




1 0