各种Controller写法,包括url映射,参数获取,数据绑定(一个类带你玩转Controller)

背景:最近为了做seo优化(虽然没啥用)但是业务有需求,各种奇葩路径访问。所以决定写这篇文章,让控制层随心所欲的映射和获取参数。

废话不多说直接上java代码,每一个方法和都有注释说明

package com.duit.controller.user;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;import com.common.entity.User;
import com.common.utils.log.ILogUtil;

/**
 * 参数Model model(实现类为modeMap),HttpServletRequest req ModelMap modeMap可以不写自己定义
 * model ModelMap会写数据必须作为参数 否则html模板无法获得绑定信息 @RequestMapping("test.html") 单路径
 * 可以映射任何路径
 * @RequestMapping(value = { "", "/page", "page*", "view" }); 多路径
 * @RequestMapping(value = { "", "/page", "page*", "view" } ,method = RequestMethod.GET) 改变方式 快捷注解
 * @GetMapping    主要是get 和post
 * @PostMapping
 * @PutMapping
 * @DeleteMapping
 * @PatchMapping
 * 
 * @RequestParam(value = "limit", required = false) 修改参数变量和必填校验 默认必填 不传报400
 * 
 * @author lichengdu
 *
 */
@Controller
@RequestMapping("/user")
public class UserController {

    /**
     * 无参但是要绑定对象到模板页面 不传model无法回传
     * @return
     */

    @RequestMapping({ "/noParams.shtml" })
    public String noParams(Model model) {
        Map<String, Object> userMap = new HashMap<String, Object>();
        userMap.put("name", "lichengdu");
        model.addAttribute("userMap", userMap);
        return "/user/show";
    }
    /**
     * 和上面的没有区别 一个是接口一个是实现类
     * @param modelMap
     * @return
     */
    
    @RequestMapping({ "/noParamsMap.shtml" })
    public String noParams(ModelMap modelMap) {
        Map<String, Object> userMap = new HashMap<String, Object>();
        userMap.put("name", "lichengdu");
        modelMap.addAttribute("userMap", userMap);
        return "/user/show";
    }

    /**
     * 请求req ModelAndView 绑定对象可以脱离model传参
     * 
     * @param req
     * @return
     */
    @RequestMapping(value = "/req.shtml")
    public ModelAndView req(HttpServletRequest req) {
        Map<String, Object> userMap = new HashMap<String, Object>();
        userMap.put("name", "lichengdu");
        ModelAndView mv = new ModelAndView();
        mv.addObject("userMap", userMap);
        mv.setViewName("/user/show");
        return mv;
    }

    @RequestMapping(value = "/model.html")
    public String model(Model model) {
        Map<String, Object> userMap = new HashMap<String, Object>();
        userMap.put("msg", "成功");
        userMap.put("code", 0);

        List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
        Map<String, Object> data1 = new HashMap<>();
        data1.put("name", "dudu");
        data1.put("age", 1);
        dataList.add(data1);

        Map<String, Object> data2 = new HashMap<>();
        data2.put("name", "dudu2");
        data2.put("age", 1);
        dataList.add(data2);

        userMap.put("data", dataList);
        model.addAttribute("userMap", userMap);
        model.addAttribute("dataList", dataList);
        return "/user/show";
    }

    @RequestMapping(value = "/modelAndReq.html")
    public String modelAndReq(ModelMap modeMap, HttpServletRequest req) {
        // 获取请求路径动态路径不用写死
        ILogUtil.info(req.getServletPath());
        Map<String, Object> userMap = new HashMap<String, Object>();
        userMap.put("msg", "成功");
        userMap.put("code", 0);

        List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
        Map<String, Object> data1 = new HashMap<>();
        data1.put("name", "dudu");
        data1.put("age", 1);
        dataList.add(data1);

        Map<String, Object> data2 = new HashMap<>();
        data2.put("name", "dudu2");
        data2.put("age", 1);
        dataList.add(data2);

        userMap.put("data", dataList);
        modeMap.addAttribute("userMap", userMap);
        modeMap.addAttribute("dataList", dataList);
        return "/user/show";
    }

    /**
     * urlParams '@PathVariable'路径参数 默认url参数 '@RequestParam'修改映射
     * http://127.0.0.1:8442/user/7,6/dudu/urlParams.shtml?id=1&phone=17340217156
     * 
     * @param tags
     * @param name
     * @param id
     * @param phone
     * @param model
     * @return
     */
    @RequestMapping(value = "/{tags}/{name}/urlParams.shtml")
    public String urlParams(@PathVariable String tags, @PathVariable String name, String id,
            @RequestParam("phone") String myPhone, Model model, HttpServletRequest req) {
        // 获取请求路径动态路径不用写死
        ILogUtil.info(req.getServletPath());
        ILogUtil.info("id===>" + id);
        Map<String, Object> userMap = new HashMap<String, Object>();
        userMap.put("name", "lichengdu");
        model.addAttribute("userMap", userMap);
        return "/user/show";
    }

    /**
     * otherParams http://127.0.0.1:8442/user/dudu/67.shtml
     * 
     * @param name
     * @param model
     * @return
     */
    @RequestMapping(value = "/{name}/{code}.shtml")
    public String otherParams(@PathVariable String name, @PathVariable String code, Model model,
            HttpServletRequest req) {
        // 获取请求路径动态路径不用写死
        ILogUtil.info(req.getServletPath());
        Map<String, Object> userMap = new HashMap<String, Object>();
        userMap.put("name", "lichengdu");
        model.addAttribute("userMap", userMap);
        return "/user/show";
    }

    /**
     * urlParams
     * 
     * @param request
     * @param response
     */
    @RequestMapping(value = "/urlParam.shtml")
    public String urlParam(HttpServletRequest request, HttpServletResponse response, Model model) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        ILogUtil.info(username);
        ILogUtil.info(password);
        Map<String, Object> userMap = new HashMap<String, Object>();
        userMap.put("name", "lichengdu");
        model.addAttribute("userMap", userMap);
        return "/user/show";
    }

    /**
     * 直接参数接收 urlParamSimple '@RequestParam'可以指定映射
     * 
     * @param request
     * @param response
     */
    @RequestMapping(value = "/urlParamSimple.shtml")
    public String urlParamSimple(String username, @RequestParam("password") String pwd, Model model) {
        ILogUtil.info(username);
        ILogUtil.info(pwd);
        Map<String, Object> userMap = new HashMap<String, Object>();
        userMap.put("name", "lichengdu");
        model.addAttribute("userMap", userMap);
        return "/user/show";
    }

    /**
     * 对象接收 User
     * 
     * @param request
     * @param response
     */
    @RequestMapping(value = "/urlParamObject.shtml")
    public String urlParamObject(User user, Model model) {
        ILogUtil.info(user.getUsername());
        ILogUtil.info(user.getPassword());
        Map<String, Object> userMap = new HashMap<String, Object>();
        userMap.put("name", "lichengdu");
        model.addAttribute("userMap", userMap);
        return "/user/show";
    }

    /**
     * 对象接收 User
     * 
     * @param request
     * @param response
     */
    @RequestMapping(value = "/array.shtml")
    public String array(int[] ids, Model model) {
        for (int i : ids) {
            ILogUtil.info(i + "");
        }
        Map<String, Object> userMap = new HashMap<String, Object>();
        userMap.put("name", "lichengdu");
        model.addAttribute("userMap", userMap);
        return "/user/show";
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值