SpringMVC基础

  1. 课程介绍
  • 1. SpringMVC概述; (了解)
  • 2. SpringMVC入门; (掌握)
  • 3. 前端控制器<url-pattern>配置; (掌握)
  • 4. 业务控制器的三种实现; (掌握)
  • 5. 全注解;    (掌握)
  • 6. 控制器常用操作(接收数据,向页面传值,重定向转发); (掌握)
  1. SpringMVC概述
  1. SpringMVC是一个基于MVC模式的WEB/表现层框架,它解决WEB开发中常见的问题:参数接收、文件上传/下载、表单验证、国际化等等;
  2. SpringMVC作为Spring框架一个非常重要的功能模块,可以与Spring无缝集成,提高开发效率;
  3. Spring是一个轻量级的Java 开发框架,为了解决企业应用开发的复杂性而创建。SpringMVC以Spring框架为核心,为应用程序中的Web层(表现层)提出的一套优秀的解决方案;
  4. 目前很多公司都使用SpringMVC,90%的招聘单位要求熟悉使用SpringMVC;

注意:SpringMvc的功能就是之前Servlet的功能,可以理解为使用SpringMVC代替了Servlet;

  1. SpringMVC入门

    1. 入门需知

      1. Jar包管理
  1. SpringMVC是建立在Spring基础上的。所以使用SpringMVC必须先保证你的项目拥有Spring的运行环境;
  2. 使用框架的第一步需要框架的官方网站下载框架相关的文件,而SpringMVC无需单独下载,因为SpringMVC是作为Spring中的一个模块存在,所以我们只需要下载Spring即可;
  3. SpringMVC需要的jar包:

spring-webmvc-4.1.2.RELEASE.jar -- SpringMVC核心包

spring-web-4.1.2.RELEASE.jar  -- Spring对Web项目项目的支持

  1. 核心控制器(前端控制器)

核心控制器:用于Web层核心功能的处理以及在所有控制器执行之前,所有的WebMvc框架都采用了这种方式,在SpringMVC中使用的是DispatcherServlet为核心控制器. DispatcherServlet核心控制器会拦截匹配的请求,把拦截下来的请求,依据相应的规则分发到目标Controller来处理;

  1. 加入相关Spring的jar包

Spring的相关jar包:

  • com.springsource.org.apache.commons.logging-1.1.1.jar
  • spring-beans-4.1.2.RELEASE.jar
  • spring-context-4.1.2.RELEASE.jar
  • spring-core-4.1.2.RELEASE.jar
  • spring-expression-4.1.2.RELEASE.jar
  • spring-aop-4.1.2.RELEASE.jar -- Spring测试需要导入此包

注意:spring orm、jdbc、tx相关jar根据项目使用自行添加;

注意:不要使用spring.3的jar和4.x的jar文件混用;

SpringMVC相关jar包:

  • spring-web-4.1.2.RELEASE.jar -- Spring对web项目的支持
  • spring-webmvc-4.1.2.RELEASE.jar -- SpringMVC核心包
    1. 配置核心控制器
  1. webmvc框架的心脏就是核心控制器,负责所有请求的公共功能,然后在分发给具体的控制器(我们编写的控制器),完成业务逻辑,响应视图;

  1. 核心控制器其实就是一个Servlet,只不过这个Servlet是由SpringMVC框架提供的,不需要自己写,只需要配置,交给容器去管理。在web.xml配置核心控制器(容器启动时就创建sevlet实例对象,并加载classpath下的一个名为spring-mvc.xml文件);

  1. 准备SpringMVC配置文件

SpringMVC是Spring的一个模块,它的配置文件和Spring的配置差不多,复制一份applicationContext.xml修改为spring-mvc.xml;

    1. 编写请求处理控制器Controller
  1. SpringMVC中的控制器与以前我们以前学习的servlet作用一样:处理用户请求、调用业务逻辑、响应请求即返回结果视图;
  2. SpringMVC中的控制器有一定规范,要么实现接口,要么使用POJO对象与注解配合使用;

规范要求

说明

实现Controller接口或子接口:

注意:子接口很多已经过时了;

核心方法为handleRequest(req,resp):处理用户请求

普通的类:常用的

使用一个普通的类作为我们的控制器,每一个方法就是一个处理器,这种方式与注解配合起来更方便哦

public class HelloController implements Controller{

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

//获取请求参数

//参数验证

//调用service进行业务逻辑处理

//返回jsp页面视图

return null;

}

}

  1. 添加处理请求代码

  1. handleRequest方法的两个参数与我们以前的servlet中service方法一样,request和response对象,我们可以使用这个两个对象完成一次请求的所有工作,比如你可以使用request接受参数,或者使用response重定向等等,注意方法除了返回值以外还有一个返回值ModelAndView;
  2. ModelAndView是SpringMVC控制器中特有一个对象,描述一次请求响应的数据(Model)和 视图(View);

  1. 编写页面

  1. 配置我们的控制器

SpringMVC是基于Spring,Spring中的核心就是Ioc容器,而Ioc容器中最重要的成员就是<bean>,SpringMVC中的控制器也是一个一个<bean>;

  1. 访问

访问:http://localhost/helloworld

注意:如果你的配置为<url-pattern>*.form</url-pattern>,并且<bean name="/helloworld.form">,访问路径为: http://localhost/helloworld.form

  1. 常见问题

部署项目,启动Tomcat报错,错误信息如下:

原因是:没找到/WEB-INF/springmvc-servlet.xml文件,因为在启动Tomcat服务器的时候会加载web.xml文件,接着初始化SpringMVC中的DispatcherServlet,而这个DispatcherServlet会根据初始化配置<init-param>加载框架配置文件,如果配置出错,或文件位置不正确,那么会默认加载路径为:/WEB-INF/<servlet-name>-servlet.xml的文件;

解决问题方式1

可以把我们的配置文件更名为springmvc-servlet.xml,然后拷贝到WEB-INF中:

解决问题方式2【推荐】

一般会将spring系列的配置文件都在放在src中或者resources(没有可以新建)中,我们可以通过以下配置告诉SpringMVC我们的配置文件路径:

  1. 前端控制器<url-pattern>配置

Spring的前端控制器拦截匹配规则(即 <url-pattern>...</url-pattern> )可以自己定义:

    1.  *.xxx(后缀匹配或扩展名匹配)
  1. *.xxx这个拦截固定结尾的url,常见的如*.do、*.json、.action等等,这是最传统的方式;
  2. 在实际项目开发中一般会要求遵守restful风格,后缀匹配是匹配不了的;

例如:查看id为1001的用户信息:/users/1001

  1. 不会导致静态文件(.jpg、.js、.css)被拦截,只有以.xxx结尾的请求才会经过DispatcherServlet处理;

    1.  /*
  1. <url-pattern>/*</url-pattern>会拦截所有url(包括/login、*.jsp、*.js、*png和*.html等),一般只用在过滤器上;
  2. 既然<url-pattern>/*</url-pattern>会拦截*.jsp,会出现访问jsp视图时被Spring的DispatcherServlet拦截,导致找不到请求资源引入的404错误,其他资源也一样,所以在SpringMVC的前端控制器中配置/*,是一个错误的配置方式;
    1.  /现在最流行的配置方式)
  1. <url-pattern>/</url-pattern>也是拦截所有,只不过不会拦截*.jsp;
  2. <url-pattern>/</url-pattern>不会拦截.js、.css、.png、.html、*.jsp等后缀型url;
  3. 但是/匹配覆盖了Tomcat的默认控制器,导致静态资源访问失效,静态资源也被拦截,只有.jsp不会被拦截;
  4. 如果想访问静态资源,必须要开启静态资源访问权限;

注意:Tomcat本身自带有一个默认控制器,匹配方式也是"/",这个默然控制器用于处理静态资源请求。如果我们配置SpringMVC前端控制器为"/",那么Tomcat的默认控制器就不生效,导致静态资源无法访问;

Tomcat/conf/web.xml

<servlet>

<servlet-name>default</servlet-name>

<!-- 处理静态资源,如图片、*.css、*.js、*.html等 -->

<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

<init-param>

<param-name>debug</param-name>

<param-value>0</param-value>

</init-param>

<init-param>

<param-name>listings</param-name>

<param-value>false</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>default</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

设置静态资源可以访问

解决办法:SpringMVC开启静态资源控制器

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc.xsd

">

<!-- 静态资源放行:相当于Tomcat默认控制器的功能 -->

<mvc:default-servlet-handler />

//其它配置略

</beans>

  1. 业务处理控制器的三种实现
  • 实现Controller接口;
  • 实现HttpRequestHandler接口;
  • 普通类(pojo)和注解 @RequestMapping;
    1. 第一种实现Controller接口

控制器:

//实现Controller接口

public class Controller01 implements Controller{

@Override

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

System.out.println(this.getClass());

//模型数据和视图对象

ModelAndView modelAndView = new ModelAndView();

modelAndView.setViewName("/WEB-INF/controller.jsp");

return modelAndView;

}

}

配置:

<bean id="/controller01.form" class="cn.itsource.springmvc._02_controller.Controller01"></bean>

  1. 第二种实现HttpRequestHandler接口

控制器:

//实现了HttpRequestHandler接口

public class Controller02 implements HttpRequestHandler{

@Override

public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

System.out.println(this.getClass());

request.getRequestDispatcher("/WEB-INF/controller.jsp").forward(request, response);

}

}

配置:

<bean id="/controller02.do" class="cn.itsource.springmvc._02_controller.Controller02"></bean>

  1. 第三种普通类注解建议使用

POJO(Plain Ordinary Java Object):简单的Java对象,实际就是普通JavaBean没有继承类,也没有实现类;

控制器:

/**

* SpringMVC中的Controller就是单例的(使用成员变量请注意线程安全问题)

* 注:不要忘了,配置全注解扫描包才能认识@Controller

* @author Administrator

*/

@Controller

public class Controller03{

@RequestMapping("/method01.form") //配置访问路径

public ModelAndView method01(){

System.out.println(this.getClass()+":method01");

ModelAndView modelAndView = new ModelAndView();

modelAndView.setViewName("/WEB-INF/controller.jsp");

return modelAndView;

}

@RequestMapping("/controller/method02.form") //配置访问路径

public ModelAndView method012(){

System.out.println(this.getClass()+":method02");

ModelAndView modelAndView = new ModelAndView();

modelAndView.setViewName("/WEB-INF/controller.jsp");

return modelAndView;

}

}

注意事项:

  1. 要使用@Controller注解(创建对象的注解),就需要配置:

<!-- 扫描包路径:会扫描cn.itsource包及其子包下所有的类,如果类上面有实例化Bean的注解(例如:@Controller),容器就会创建该类的实例,并交给容器管理。否则不创建 -->

<context:component-scan base-package="cn.itsource" />

  1. 要使用@RequestMapping注解(请求映射注解),就需要配置:

<!-- 开启spring对mvc的支持:即能够使用@RequestMapping注解 -->

<mvc:annotation-driven></mvc:annotation-driven>

  1. 全注解
  1. Spring不仅支持xml配置,也支持注解配置,使用注解配置会提高开发效率;
  2. SpringMVC中控制器建议使用注解方式,是官方推荐的,外面公司也是使用此方式;
  3. 常用注解分三种:
  1. 第一种:实例化bean的注解
  2. 第二种:注入注解
  3. 第三种:请求映射(匹配)注解
    1. 请求映射(匹配)注解
  1. 请求匹配可以使用@RequestMapping注解实现,该注解可以作用在类上和方法上;
  2. 需要在XML配置Spring对mvc注解支持功能,能识别@RequestMapping:

<mvc:annotation-driven />

  1. 指定请求方法:@RequestMapping(value = "/upload", method = RequestMethod.GET)

    1. 实例化bean的注解
  1. 指定一个包路径,Spring会自动扫描该包及其子包所有类,当发现类定义前有特定的注解标记时,就将该类的对象实例化并纳入到Spring容器中,等价于原有XML配置中<bean>定义功能;
  2. 组件扫描可以替代大量XML配置的<bean>定义;
  3. 需要在XML配置中指定扫描路径:

<context:component-scan base-package="cn.itsource"/>

  1. 以上配置,容器在实例化对象时会自动扫描cn.itsource包及其子包下所有类,如果有多个包可以再写一条<context>;
  2. 指定扫描类路径后,并不是该路径下的所有组件类都扫描到Spring容器的,只有在组件类定义前面有以下标记时,才会扫描到Spring容器;

    1. 注入注解
  1. 具有依赖关系的Bean对象,利用此注解可以实现关系注入:@Autowired、@Resource
  2. 这些注解标记可以用在字段定义或setter方法定义前面,一般用于注入容器中对象,该注解可以直接写在字段上,那么就不需要setter方法了;

注意:使用该注解之前,一定要确保容器中是否有该类型的对象,否则注入失败;

  1. 控制器常用操作

控制器除了处理请求并返回视图以外,还需要一些事情,比如接收页面请求参数、绑定数据到页面、返回json数据、文件上传、文件下载等;

    1. 接收请求参数

      1. 处理中文参数乱码问题
  1. 参数接收,首先要考虑乱码问题,以前的处理方式是:
    1. Get请求:tomcat6.x,7.x/conf/server.xml中配置(tomcat8.X不需要配置):

<Connector port="80" protocol="HTTP/1.1" URIEncoding="UTF-8"

connectionTimeout="20000"

redirectPort="8443" />

  1. Post请求:需要再获取请求参数之前设置编码格式:

req.setCharacterEncoding("utf-8");

  1. 对于Post请求而言,通过上述的方式就需要在每一个控制器都要去处理乱码,有没有更加简洁的办法,只写一次就可以作用在所以在其他控制器呢?

    1. 过滤器

      1. 过滤器介绍
  1. 生活中的过滤器: 净水器、空气净化器、渔网、烟嘴、塞子;

  1. Filter过滤器是一个对访问的请求和响应进行拦截的web组件;
  2. Filter过滤器可以实现web容器对某资源的访问前截获进行相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理;

    1. 过滤器编写
  1. 写一个类去实现Filter接口,并实现接口中的所有方法;
  2. 在web.xml中配置或者使用注解配置【@WebFilter("过滤器路径")不推荐】

Java代码:

public class FirstFilter implements Filter {

public FirstFilter() {

}

public void destroy() {

}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

request.setCharacterEncoding("utf-8");

chain.doFilter(request,response);//放行

}

public void init(FilterConfig fConfig) throws ServletException {

}

}

web.xml配置

<filter>

<filter-name>first</filter-name>

<filter-class>cn.itsource.filter.FirstFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>first</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

    1. 配置字符编码过滤器
  1. springmvc框架本身没有处理请求编码,但是spring框架为我们提供了一个编码过滤器。开发者只需要配置一个spring内置请求编码过滤器即可。在web.xml配置一个请求编码过滤器:

<!-- 支持UTF-8编码 -->

<filter>

<filter-name>characterEncoding</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<!--强制指定字符编码,即使request或response设置了字符编码,也会强制使用当前设置的,任何情况下强制使用此编码-->

<init-param>

<param-name>forceEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>characterEncoding</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

    1. 参数接收方式
  1. 通过传统的HttpServletRequest接收;
  2. 通过控制器的执行方法的参数接收;
  3. 通过对象来接收;
  4. 通过url中的参数接收(restfull风格) @PathVariable("id")转换;
    1. 通过传统的HttpServletRequest接收

SpringMVC想要使用HttpServletRequest、HttpSession、HttpServletResponse对象可以直接在方法参数中写即可,很强大,需要什么就写什么(只限于普通类加注解的实现方式);

//使用HttpServletRequest接收(不建议使用)

/**

* http://localhost/params04?name=admin&age=24

*/

@RequestMapping("/params04")

public ModelAndView params04(HttpServletRequest request){

System.out.println(request.getParameter("name"));

System.out.println(request.getParameter("age"));

return null;

}

  1. 通过参数接收

名称与传递参数一致:

//普通数据接收

/**

* http://localhost/params01?name=admin&age=24

*/

@RequestMapping("/params01")

public ModelAndView params01(String name,Integer age){

System.out.println("name:"+name);

System.out.println("age:"+age);

System.out.println("xx:"+xx);

return null;

}

名称与传递参数不一致:使用@RequestParam("xxx")注解

/**

* 如果传过来的名称与接收的名称不一致

* http://localhost/params02?name=admin&age=24

*/

@RequestMapping("/params02")

public ModelAndView params02(@RequestParam("name") String username,Integer age){

System.out.println("username:"+username);

System.out.println("age:"+age);

return null;

}

  1. 通过对象接收

/*

* http://localhost/params03?name=admin&age=24&date=2017-05-14

* 注意:接收日期必需在 set时间前配置:@DateTimeFormat(pattern="yyyy-MM-dd")

*/

@RequestMapping("/params03")

public ModelAndView params03(User user){

System.out.println("name:"+user.getName());

System.out.println("age:"+user.getAge());

System.out.println("date:"+user.getDate());

return null;

}

特别注意:在对象部分咱们加了一个日期,而日期格式的数据接收需要加相应的注解:

public class User {

private Long id;

private String name;

private Integer age;

private Date date;

//其它的getter,setter省略...

@DateTimeFormat(pattern="yyyy-MM-dd")

public void setDate(Date date) {

this.date = date;

}

}

  1. URL地址提取数据

使用@PathVariable("id")

/**

* 接收url中参数的请求,接收用户请求参数值

* http://localhost/params05/delete/100/tom

* 注:这种方式为RESTful风格,参数不易过多

*/

@RequestMapping("/params05/delete/{id}/{username}")

public ModelAndView params05(@PathVariable("id")Long id,@PathVariable("username")String name){

System.out.println(id);

System.out.println(name);

return null;

}

    1. 视图解析器
  1. SpringMvc提供了InternalResourceViewResolver,用于统一管理响应视图的匹配;
  2. 使用之后,响应的数据就会交给这个视图解析器进行解析,然后转向响应的页面,控制器中响应视图写法就比较简单了;

<!-- 设置视图路径的前后缀,该配置可以让我们写视图路径的时候更简单 -->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/jsps/" />

<property name="suffix" value=".jsp" />

路径简写:

  1. 向页面传值

传递数据就是Controller往前台(页面)传递数据;

  1. 通过传统的HttpServletRequest传递;
  2. 通过ModelAndView对象传递;
  3. 通过Model对象传递;
    1. 通过传统的HttpServletRequest传递

//通过request对象进行数据传递(不建议使用)

@RequestMapping("/data03")

public void data03(HttpServletRequest request,HttpServletResponse response)

throws ServletException, IOException{

request.setAttribute("name", "德克儿!");

request.getRequestDispatcher("/WEB-INF/jsps/data.jsp").forward(request, response);

}

  1. 使用Model方式

//通过model对象进行数据传递

/**

* SpringMVC会自动创建模型对象传到方法中,我们只需要往这个模型对象中添加数据即可

* 返回值为字符串,我们可以理解为就是一个视图的名称(写路径即可)

*/

@RequestMapping("/data01")

public String data01(Model model){

model.addAttribute("name","史密斯!");

User u = new User();

u.setName("张三x");

//添加模型数据,key的值为对象的类型首字母小写

model.addAttribute(u);

return "/WEB-INF/jsps/data.jsp";

}

  1. 通用ModelAndView对象传递

//通用ModelAndView方式

@RequestMapping("/data02")

public ModelAndView data02(){

ModelAndView mdv = new ModelAndView();

//设置数据到前台

mdv.addObject("name", "约什!~");

User u = new User();

u.setName("张三");

//添加模型数据,key的值为对象的类型首字母小写

mdv.addObject(u);

//视图名称(路径)

mdv.setViewName("/WEB-INF/jsps/data.jsp");

return mdv;

}

  1. 跳转方式

咱们学习的跳转方式有两种:重定向与请求转发

请求转发(forward)

重定向(redirect)

访问WEB-INF

X

request传参

X

全新请求(URL变化)

X

访问外网

X

    1. 请求转发forward
  1. SpringMVC默认就是使用的是转发的方式进行跳转的。上面的案例都是转发,转发的值都是放到request请求作用域,下一个页面可以取出;
  2. Url地址栏中地址不会发生变化;
  3. SpringMVC中使用"forward:/uri"实现转发:

/**

* 使用请求转发

* @return

*/

@RequestMapping("/data05")

public String data5(Model model,HttpSession session){

model.addAttribute("test","张三");//可以取出数据

session.setAttribute("testsession", "张三session");//可以取出数据

return "forward:/data.jsp";

}

    1. 请求重定向redirect
  1. 重定向就是发出一个全新的请求:
    1. 如果把值放到request请求,下一个页面不能取出
    2. 如果把值放到session会话请求,下一个页面可以取出
  2. Url地址栏中地址会发生改变;
  3. SpringMVC中使用"redirect:/uri"即可实现重定向;

@RequestMapping("/data06")

public String data6(Model model,HttpSession session){

model.addAttribute("test","张三");//不可以取出数据

session.setAttribute("testsession", "张三session");//可以取出数据

return "redirect:/data.jsp";

}

    1. 注意事项
  1. 在使用重定向和forward进行转发的时候,是不会经过视图解析器的(默认的转发会经过视图解析器),例如:

瑞思拜 我儿豁 SpringMVC基础 兄弟们冲冲冲相关推荐

  1. javaweb实训第五天下午——SpringMVC基础

    SpringMVC基础 1.课程介绍 2.SpringMVC概述 3.SpringMVC入门 3.1.入门需知 3.1.1.Jar包管理 3.1.2.核心控制器(前端控制器) 3.2.加入相关Spri ...

  2. SpringMVC基础配置及使用

    SpringMVC基础配置及使用 SpringMVC: 1.SpringMVC和Spring的关系:     软件开发的三层架构: web层[表示层.表现层]---->Service层----& ...

  3. JAVAEE框架之SpringMVC基础

    JAVAEE框架之Spring 九.SpringMVC基础 ​ 概念:SpringMVC 是类似于 Struts2 的一个 MVC 框架,在实际开发中,接收浏览器的请求响应,对数据进行处理,然后返回页 ...

  4. 【Java从0到架构师】SpringMVC - 基础

    SpringMVC - 基础 SpringMVC - 入门 web.xml 配置 DispatcherServlet appliactionContext.xml 新建 Controller Spri ...

  5. SpringMVC基础学习之Controller的两种实现方式和RequstMapping注解的使用

    前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 这个SpringM ...

  6. SpringMVC基础

    SpringMVC基础 1.SpringMVC概述 1.1 三层架构 三层架构: 表现层:负责数据展示 业务层:负责业务处理 数据层:负责数据操作 1.2 MVC MVC(Model View Con ...

  7. 一、SpringMVC基础入门,创建一个HelloWorld程序

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...

  8. SpringMVC基础学习之Restful风格的简单使用

    前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 这个SpringM ...

  9. SpringMVC基础配置与简单的SpringMVC的程序

    SpringMVC SpringMVC技术架构图 基础配置(代码中有详细的基础配置使用的注解和标签的解释) 搭建maven项目 POM <?xml version="1.0" ...

最新文章

  1. ubuntu 修改或创建交换分区的大小
  2. HokeyPokey — WWDC讲师特供XCode插件高仿版的设计与实现
  3. centos ruby通过rvm更新版本
  4. Android Studio中关于9-patch格式图片的编译错误
  5. 石墨烯将是下一个万亿级别的产业,投资者该如何提前布局?
  6. spring作业_Spring和石英:多作业计划服务
  7. no typehandler found for property XXXX 解决
  8. Java简单记事本设计实验报告_基于JAVA的记事本设计报告.doc
  9. python数据按照分组进行频率分布_python实现读取类别频数数据画水平条形图
  10. 60-330-000-使用-窗口TopN分析与实现
  11. 定制geojson的一些小技巧和方法
  12. VLFeat vs2015 vc++ 64位操作系统 配置 运行(Win7,Win10)
  13. excel常用函数公式
  14. PeopleCert认证证书核验真伪(含ITIL、PRINCE2、DevOps、Scrum……等证书)
  15. 5.Transformation(转换算子)
  16. 《明解C语言》第九章字符串课后练习题
  17. [RK3568 Android11] 教程之制作和替换android开机logo图片
  18. 最全银行核心系统架构解读(165页PPT)
  19. 可视化 | Echarts基础异步加载数据交互组件数据集
  20. PAT 自学题解 B1033【测试点4超时】

热门文章

  1. Python 一键导出微信读书的书籍和笔记
  2. FH Admin fhadmn 源码项目下载获取 Java后台 springmvc mybatis SSM
  3. win10 uwp 如何开始写 uwp 程序
  4. python爬取今日头条专栏_[python3]今日头条图片爬取
  5. C++设计一个长方形类
  6. Thread.Sleep vs. Task.Delay
  7. 计算机函数求最大值怎么设置,高中数学函数的最大值和最小值怎么求
  8. Inmp架构搭建wordpress开源博客
  9. 计算机技术对英语课堂,信息技术在英语课堂中的运用
  10. 判断当前入口是PC端企业微信还是PC端浏览器。或者是APP端企业微信