欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > SpringMVC

SpringMVC

2025/4/18 22:53:51 来源:https://blog.csdn.net/qq_62859013/article/details/144142089  浏览:    关键词:SpringMVC

SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装。

  • SpringMVC==主要==负责的就是
    • controller如何接收请求和数据
    • 如何将请求和数据转发给业务层
    • 如何将响应数据转换成json发回到前端

springMVC注解:

@Controller:

设置controller层的bean对象

@RequestMapping

设置当前控制器方法请求访问路径

1.属性,params = "uname"

params:

{ "param1=value1" , "param2" , "!param3" }

例子

    @RequestMapping(value = "/index" ,params = {"uname=张三","uid","!upwd"})

请求参数的映射条件,指定请求的URL地址需要带那些参数

2.method:

RequestMethod.GET 必须以GET方式进入 @GetMapping

RequestMethod.POST 必须以POST方式进入 @PostMapping

@RequestMapping(value = "/index" ,method = RequestMethod.GET ,params = "uname")public ModelAndView index(@RequestParam(value = "uname") String uname,String uid){System.out.println(uname+"========");System.out.println(uid+"========");ModelAndView modelAndView = new ModelAndView();System.out.println("进入index方法");modelAndView.setViewName("/index.jsp");//转发return modelAndView;}}
@ResponseBody

设置当前控制器方法响应内容为当前返回值,无需解析

@RequestParam:

属性value起别名

属性require是否必须传 false为否

defaultValue:默认值

require和defaultValue有冲突

    @RequestMapping(value = "/index" ,method = RequestMethod.GET,params = {"uname=张三","uid"})public ModelAndView index(@RequestParam(value = "uname" ) String uname,String uid){ModelAndView modelAndView = new ModelAndView();System.out.println("进入index方法");modelAndView.setViewName("/index.jsp");//转发return modelAndView;}

ModelAndView:

使用addObject("uname","陈梦雨");方法在request作用域存键和值

    @RequestMapping("/index1" )public ModelAndView index1(){
//返回页面 转发
//        ModelAndView mav = new ModelAndView("视图名");
//        或ModelAndView mav = new ModelAndView();mav.setViewName("/index.jsp");
//存入值 Request作用域mav.addObject("uname","陈梦雨");return mav;}

Model对象:

存的值到request作用域中

addAttribute()方法

    @RequestMapping("/index1" )public String index1(Model model){
//        放入request作用域中model.addAttribute("user_name","张三");return "index.jsp"; //返回user.jsp页面}

Map对象:

存的值到request作用域中

 @RequestMapping("/index2" )public String index2(Map<String ,Object> map){map.put("user_name","123");return "index.jsp";}

@ModelAttribute()可以代替model,直接把对象放request作用域里面
    @RequestMapping(value = "/test03" ,method = RequestMethod.GET )public String Test03(@ModelAttribute("smbmsUser") SmbmsUser smbmsUser){//        model存放的都是request作用域smbmsUser.setUname("张三");return "/index.jsp";}

@SessionAttributes(value = {"smbmsUser"})放类上面,用来标记放入session的变量
@SessionAttributes(value = {"smbmsUser"})
@Controller
public class BillController {@RequestMapping(value = "/test04" ,method = RequestMethod.GET )public String Test04(SmbmsUser smbmsUser){//        model存放的都是request作用域smbmsUser.setUname("张三");return "/index.jsp";}
}

像这种user_name同时存进了Request作用域和Session作用域

//类中定义user_name存入session作用域
@SessionAttributes(value = {"user_name"})
public class IndexController {
@RequestMapping("/ts")
public ModelAndView index(){
ModelAndView mav = new ModelAndView("user");
//存入Request作用域和Session作用域
mav.addObject("user_name",user_name);
....
}

@SessionAttributes(types=User.class)会将model中所有类型为 User的属性添加到会话中。
@SessionAttributes(value={“user1”, “user2”}) 会将model中属性名为user1和user2的属性添
加到会话中。
@SessionAttributes(types={User.class, Dept.class}) 会将model中所有类型为 User和Dept
的属性添加到会话中。
@SessionAttributes(value={“user1”,“user2”},types={Dept.class})会将model中属性名为
user1和user2以及类型为Dept的属性添加到会话中。

session,request,response对象:

引入包

<!--servlet-api-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>

这上头的参数和以前servlet的一样,这样就能够直接使用这三个对象了

    @RequestMapping(value = "/test04" ,method = RequestMethod.GET )public String Test04(HttpServletRequest request, HttpServletResponse response,HttpSession session){//        model存放的都是request作用域session.setAttribute("uname","张三");return "/index.jsp";}

转发与重定向:

这种就是转发,不写forword也是默认转发

  return "forward:/index.jsp";
  return "/index.jsp";

这种就是重定向

 return "redirect:/index.jsp";

@ResponseBody:

json依赖包

<!--JSON依赖-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
@DateTimeFormat:

可以在实体类的字段上使用

 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime createTime;
@JsonFormat

返回JSON数据时日期类型处理

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date user_login_endtime;
ResultJson工具类:

注意一定是返回ResultJSON而且要加上@ResponseBody返回json类型

    @ResponseBody@RequestMapping("/test07" )public ResultJSON Test07(  ){SmbmsUser smbmsUser = new SmbmsUser();smbmsUser.setUid(111);smbmsUser.setUname("陈梦雨");return ResultJSON.success(smbmsUser);}

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)

表示属性为null不返回

@RestController:

标注该类中所有的方法都返回JSON 用于类中。无须在写@Controller

写在类上方

@DateTimeFormat:

用户对象属性,控制入参时日期类型转换

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date user_login_endtime;

Rest模式:

就是这个.html是虚假的,是由我们来操纵内容,但是页面还是index.jsp页面

    @RequestMapping(value="/test/{user_id}.html")public String index1(@PathVariable("user_id") Long user_id,HttpServletRequest request){request.setAttribute("user_id",user_id);System.out.println("id======"+user_id);return "/index.jsp";}

配置数据:

pom.xml

    <dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency>

spring-config中:

    <!--自动扫描的包名,只扫描@Controller --><context:component-scan base-package="com.hz.controller"/><!--开启注解--><mvc:annotation-driven/>

<web-app>中:

<web-app><display-name>Archetype Created Web Application</display-name><!--配置前端控制器--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--contextConfigLocation  classpath  加载spring-mvc.xml --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-*.xml</param-value></init-param><!--启动时加载--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

Controller中

@Controller
public class UserController {@RequestMapping("/index")public ModelAndView index(){ModelAndView modelAndView = new ModelAndView();System.out.println("进入index方法");modelAndView.setViewName("/index.jsp");//转发return modelAndView;}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词