4 springMVC详解(项目实战2-控制器接收参数)

1 controller

package cn.edu.nuaa.controller;


import cn.edu.nuaa.domain.Account;
import cn.edu.nuaa.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Date;
import java.util.Map;

/**
 * 请求参数绑定
 */
@Controller
@RequestMapping("/param")
public class ParamController {

    /**
     * 请求参数绑定入门
     * @return
     */
    @RequestMapping("/testParam")
    public String testParam(String username,String password){
        System.out.println("执行了...");
        System.out.println("用户名:"+username);
        System.out.println("密码:"+password);
        return "success";
    }

    /**
     * 请求参数绑定把数据封装到JavaBean的类中
     * @return
     */
    @RequestMapping("/saveAccount")
    public String saveAccount(Account account){
        System.out.println("执行了...");
        System.out.println(account);
        return "success";
    }


    /**
     * 自定义类型转换器
     * @param user
     * @return
     */
    @RequestMapping("/saveUser")
    public String saveUser(User user){
        System.out.println("执行了...");
        System.out.println(user);
        return "success";
    }

    @RequestMapping(value="/testPathVariable/{sid}")
    public String testPathVariable(@PathVariable(name="sid") String id){
        System.out.println("执行了...");
        System.out.println(id);
        return "success";
    }

    /**
     * 获取到请求体的内容
     * @return
     */
    @RequestMapping("/testRequestBody")
    public String testRequestBody(@RequestBody String body){
        System.out.println("执行了...");
        System.out.println(body);
        return "success";
    }

    /**
     * 获取请求头的值
     * @param header
     * @return
     */
    @RequestMapping(value="/testRequestHeader")
    public String testRequestHeader(@RequestHeader(value="Accept") String header, HttpServletRequest request, HttpServletResponse response) throws IOException {
        System.out.println("执行了...");
        System.out.println(header);
        // return "success";
        // response.sendRedirect(request.getContextPath()+"/anno/testCookieValue");
        return "success";
    }

    /**
     * 获取Cookie的值
     * @return
     */
    @RequestMapping(value="/testCookieValue")
    public String testCookieValue(@CookieValue(value="JSESSIONID") String cookieValue){
        System.out.println("执行了...");
        System.out.println(cookieValue);
        return "success";
    }

    @RequestMapping(value="/testModelAttribute")
    public String testModelAttribute(@ModelAttribute("abc") User user){
        System.out.println("testModelAttribute执行了...");
        System.out.println(user);
        return "success";
    }

    @ModelAttribute
    public void showUser(String uname, Map<String,User> map){
        System.out.println("showUser执行了...");
        // 通过用户查询数据库(模拟)
        User user = new User();
        user.setUname(uname);
        user.setAge(20);
        user.setDate(new Date());
        map.put("abc",user);
    }

}

2 测试代码

为了不起动服务器,我们使用mockMVC进行测试

package cn.edu.nuaa.springday01Test;

import cn.edu.nuaa.controller.AnnoController;
import cn.edu.nuaa.controller.ParamController;
import com.alibaba.fastjson.JSONObject;
import org.junit.Test;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import javax.servlet.http.Cookie;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;

public class testParm {

    ParamController paramController = new ParamController();
    MockMvc mockMvc = standaloneSetup(paramController).build();
    @Test
    public void test1() throws Exception {

        mockMvc.perform(get("/param/testParam")
                .param("username", "zhangsan")
                .param("password", "123"))
                .andExpect(view().name("success"));
    }

    @Test
    public void test2() throws Exception {

        mockMvc.perform(post("/param/saveAccount")
                .param("username", "lisi"))
                .andExpect(view().name("success"));

    }

    @Test
    public void test3() throws Exception {

        mockMvc.perform(post("/param/saveUser")
                .param("uname", "wangwu")
                .param("age", "1")
                .param("date","Wed Jan 01 00:00:00 CST 2020"))
                .andExpect(view().name("success"));

    }

    @Test
    public void test4() throws Exception {

        String requestJson = JSONObject.toJSONString("testJOSN");
        mockMvc.perform(post("/param/testRequestBody")
                .contentType(MediaType.APPLICATION_JSON).content(requestJson))
                .andExpect(view().name("success"));

    }

    @Test
    public void test5() throws Exception {
        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/param/testRequestHeader")
                .contentType("text/html")
                .accept(MediaType.APPLICATION_JSON);
        mockMvc.perform(request)
               .andExpect(view().name("success"));

    }

    @Test
    public void test6() throws Exception {
        Cookie cookie =new Cookie("JSESSIONID","c1");
        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/param/testCookieValue")
                .contentType("text/html")
                .accept(MediaType.APPLICATION_JSON)
                .cookie(cookie);
        mockMvc.perform(request)
                .andExpect(view().name("success"));

    }

    @Test
    public void test7() throws Exception {
        MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/param/testRequestHeader")
                .contentType("text/html")
                .accept(MediaType.APPLICATION_JSON);
        mockMvc.perform(request)
                .andExpect(view().name("success"));

    }

    @Test
    public void test8() throws Exception {
        mockMvc.perform(post("/param/testModelAttribute")
                .param("uname", "wangwu"))
                .andExpect(view().name("success"));
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
***VC项目中,可以通过编写配置文件来实现具体的实战。首先,在SpringMVC的配置文件中,可以通过`<mvc:interceptors>`标签配置拦截器。拦截器可以用于在请求处理之前或之后执行一些操作,比如验证用户权限、记录日志等。在配置文件中,可以通过`<mvc:interceptor>`标签定义一个拦截器,并使用`<mvc:mapping>`标签指定拦截器的作用路径,使用`<mvc:exclude-mapping>`标签指定不需要拦截的路径。最后,需要在`<mvc:interceptors>`标签内将拦截器配置为一个bean。 此外,在SpringMVC中,可以使用`@Controller`注解标记一个类为SpringMVC的Controller对象。Controller对象负责处理请求,并将结果返回给客户端。可以使用`@RequestMapping`注解来指定处理请求的路径。另外,还可以使用其他注解来处理请求参数、处理响应、处理异常等。 综上所述,一个实战的SpringMVC项目可以包括以下步骤: 1. 创建一个SpringMVC的配置文件,并在配置文件中配置拦截器。 2. 创建一个Controller类,并使用`@Controller`注解标记。 3. 在Controller类中使用`@RequestMapping`注解指定处理请求的路径。 4. 可以使用其他注解来处理请求参数、处理响应、处理异常等。 5. 部署项目并启动服务器,然后可以通过浏览器发送请求来测试项目的功能。 通过以上步骤,可以实现一个简单的SpringMVC项目,并进行实战开发。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SpringMVC 实战](https://blog.csdn.net/qq_42588990/article/details/121076564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值