SpringMVC知识点简单规整

这篇具有很好参考价值的文章主要介绍了SpringMVC知识点简单规整。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringMVC知识点简单规整

---------------------------------------Spring MVC---------------------------------文章来源地址https://www.toymoban.com/news/detail-824308.html

一、Spring MVC的介绍

1、mvc设计模式的介绍
	M(model):模型层,
			数据模型:pojo
			业务模型:service、mapper
	V(view):视图层,jsp和html,负责和用户交互
	C(controller):控制层,servlet和controller,负责接受请求和响应
2、springmvc的介绍
	springmvc是spring框架的一个模块,是一个基于mvc设计模式的web框架,本质上相当于servlet

二、springmvc入门案例

	1.index.jsp
	    <a href="/hello">hello</a>
    2.controller
        @Controller
        public class HelloControler{

            @RequestMapping("/hello")
            public ModelAndView hello(){
                ModelAndView mv = new ModelAndView();
                mv.addObject("msg", "师姐你好");
                mv.setViewName("success");
                return mv;
            }
        }
    3、配置springmvc要扫描的包
        <context:component-scan base-package="com.by.controller"></context:component-scan>
    3、配置视图解析器
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <!--jsp的目录-->
                <property name="prefix" value="/WEB-INF/pages/"></property>
                <!--jsp的扩展名-->
                <property name="suffix" value=".jsp"></property>
        </bean>
    5、web.xml
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <!--前端控制器-->
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springmvc.xml</param-value>
            </init-param>
            <!--tomcat启动就创建加载DispatcherServlet-->
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <!--/只能拦截路径,而 / *能够拦截路径和页面-->
            <url-pattern>/</url-pattern>
        </servlet-mapping>

三、springmvc的核心组件

DispatcherServlet(前端控制器):扫描controller,接受请求
HandlerMapping(处理器映射器):查找handler
HandlerAdaptor(处理器适配器):调用handler
ViewResolver(视图解析器):解析jsp的具体路径
view(视图渲染器):把数据填充到request,跳转页面

四、RequestMapping注解

1、value属性:设置url,窄化路径
    <a href="/一级路径/二级路径">

    @RequestMapping("/一级路径")
    public class AccountController{

        @RequestMapping("/二级路径")
        public ModelAndView findAccount(){
        }
    }
2、method属性:设置请求方式
    @RequestMapping(value="/请求路径", method=RequestMethod.Get|Post|Put|Delete)
    @GetMapping("/请求路径")
    @PutMapping("/请求路径")

五、controller方法的返回值

1、返回ModelAndView
    public ModelAndView findAccount(ModelAndView mv){
        mv.addObject("", "");//request.setAttribute("", "");
        mv.setViewName("jsp名称");
        return mv;
    }
2、返回字符串
    1)返回视图名
       public String findAccount(Model model){
            model.addAttribute("", "");//request.setAttribute("", "");
            return "success";
       }
    2)重定向(1.地址栏会变  2.数据丢失)
        return "redirect:/请求路径";
    3)请求转发(1.地址栏不会变  2.数据不丢失)
        return "forward:/请求路径";

六、接收参数

1、基本类型(少量)
    <a href="/account/findAccount?id=123">

    public String findAccount(Integer id){
        return "success";
    }
2、pojo类型(多个)
    <a href="/account/findAccount?id=123&name=tomcat=&money=100">

    public String findAccount(Account account){
        return "success";
    }
3、restful
   <a href="/account/findAccount/123">

   @RequestMapping("/findAccount/{id}")
   public String findAccount(@PathVariable Integer id){
       return "success";
   }
4、json类型
   $.ajax({
         type:"post",
         url:"/account/findAccount",
         contentType:"application/json;charset=UTF-8",
         data:'{"id":1,"name":"张二狗","money":999.0}',
         success:function(data){
             //{id:2, name:铁柱, money:100}
             alert(data.name);
         }
     })

   @RequestMapping("/findAccount")
   @ResponseBody
   public Account findAccount(@RequestBody Account account){
      return account;
   }
5、日期类型转换器
    public class DateConverter implements Converter<String, Date> {

    }

    <!--注册转换器工厂-->
    <mvc:annotation-driven conversion-service="cs"></mvc:annotation-driven>

    <!--配置类型转换器工厂-->
    <bean id="cs" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.by.converter.DateConverter"></bean>
            </set>
        </property>
    </bean>
6、中文乱码
    1)post
          <filter>
            <filter-name>CharacterEncodingFilter</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>
        </filter>
        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    2)get
        new String(name.getBytes(), "UTF-8");
7、servlet API接收参数
    public String findAccount(HttpServletRequest request){
            String name = request.getParameter("name");
    }

七、数据传递

1、ModelAndView
    public ModelAndView findAccount(ModelAndView mv) {
        mv.addObject("msg", "欢迎你 springmvc");
        mv.setViewName("success");
        return mv;
    }
2、Model
    public String findAccount(Model model) {
        model.addAttribute("msg", "欢迎你 springmvc");
        return "success";
    }
3、json
    @ResponseBody
    public Account findAccount(){
    }
4、servlet API数据传递
    public String findAccount(HttpServletRequest request){
       request.setAttribute("key", "value")
    }

八、文件上传

1、pom.xml
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>
2、配置上传解析器
    <!--配置文件上传解析器-->
    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="5242880" />
        <property name="defaultEncoding" value="UTF-8" />
    </bean>
3、form
    <form action="/account/upload" method="post" enctype="multipart/form-data">
        图片:<input type="file" name="img"><br>
        <input type="submit" value="上传">
      </form>
3、文件上传
    @RequestMapping("/upload")
    public String upload(MultipartFile img) throws IOException {
        //1、获得tomcat的路径

        //2、创建uploads目录

        //3、上传文件
    }

九、全局异常处理器

@Component
public class GlobalExceptionHandler implements HandlerExceptionResolver {
    /**
        1.发邮件、发短信
        2.跳转错误页面
     */
}

十、拦截器

1、什么是拦截器?
    拦截器(interceptor):类似于filter,用于拦截用户请求,基于aop实现
2、filter和interceptor的区别?
                    依赖                 原理
   filter          无依赖                方法回调
   interceptor     依赖于spring          aop
3、拦截器入门
    1、interceptor
        public class LoginInterceptor implements HandlerInterceptor {
            ...
        }
    2、springmvc.xml
        <!--配置拦截器-->
        <mvc:interceptors>
            <mvc:interceptor>
                <!--匹配所有url:/user/register-->
                <mvc:mapping path="/**"/>
                <!--排除/usr/*-->
                <mvc:exclude-mapping path="/user/login"/>
                <mvc:exclude-mapping path="/user/toRegister"/>
                <mvc:exclude-mapping path="/user/register"/>
                <bean class="com.by.interceptor.LoginInterceptor"></bean>
            </mvc:interceptor>
        </mvc:interceptors>

到了这里,关于SpringMVC知识点简单规整的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 脚踏Java知识点

    三元运算符和if语句格式的区别 语法格式: 表达式执行: 返回值: 使用场景: switch语句 switch语句的基本语法如下: switch语句的执行流程如下: 需要注意的是: 下面是一个示例,演示了如何使用 switch 语句判断星期几: 循环结构 for循环: 具体执行过程为 while循环: 具体

    2024年02月13日
    浏览(50)
  • JAVA知识点梳理

    boo=false; //每一轮排序都会将最大的一个排到最后 所以-i 2.第一次不同如果是数值,返回长度差 第一次不同如果是字符,返回两个字符的Ascrll码的差值

    2024年02月12日
    浏览(46)
  • Java 面试知识点

    基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的 语法,集合的语法,io 的语法,虚拟机方面的语法。 和都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true,否

    2024年02月16日
    浏览(43)
  • Java 基础知识点

    Object 类相关方法   getClass 获取当前运行时对象的 Class 对象。 hashCode 返回对象的 hash 码。 clone 拷贝当前对象, 必须实现 Cloneable 接口。浅拷贝对基本类型进行值拷贝,对引用类型拷贝引用;深拷贝对基本类型进行值拷贝,对引用类型对象不但拷贝对象的引用还拷贝对象的相

    2024年02月13日
    浏览(64)
  • 常见java知识点1

    目录 1    什么是Spring框架?Spring框架有哪些主要模块? 2    使用Spring框架有什么好处? 3    Java常用的包(列举六个) 4    Arraylist 和 Linkedlist 的区别 5    HashMap和Hashtable的区别 6    Java中常见的 io 流? 7    说一下常见的几个线程池?(Java里面有4个线程池) 8  

    2024年02月16日
    浏览(40)
  • java面试常见知识点

    JDK(Java Development Kit)是Java开发工具包,是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。 JRE是运行基于Java语言编写的程序所不可缺少的运行环境。JRE中包含了JVM,runtime class libraries和Jav

    2024年02月11日
    浏览(56)
  • java基础知识点复习①

    java是一门开源的面向对象的编程语言,具有面向对象的封装、继承、多态的特点。 封装:将类的某些信息隐藏起来,只提供特定的方法来访问或修改这些隐藏信息,从而防止直接操作类中的某些属性。是通过访问权限修饰符来实现封装的,public——protected——default——pri

    2023年04月22日
    浏览(52)
  • Java期末复习——知识点+题库

    简单、面向对象、平台无关、多线程、动态 Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 关于 Java 标识符,有以下几点需要注意: 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始 首字符之后可以是字母(A-Z 或者

    2024年02月02日
    浏览(65)
  • java基础之线程知识点

    操作系统(OS)中并发(同时)执行的多个程序任务 宏观并行,微观串行 在一个时间段内,CPU会将时间段划分为若干个时间片,一个时间片是能被一个程序拥有,且只有拥有时间片的程序才能执行自身内容,所以当时间片的划分足够细小,交替频率足够快,就会形成并行的假象,时间上仍然是

    2024年02月01日
    浏览(50)
  • Java集合基础知识点复习

    主要分为两类: 第一个是Collection 属于单列集合,第二个是Map 属于双列集合在Collection中有两个子接口List和Set。在我们平常开发的过程中用的比较多像list接口中的实现类ArrarList和LinkedList。 在Set接口中有实现类HashSet和TreeSet。 在map接口中有很多的实现类,平时比较常见的是

    2024年04月08日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包