SpringMVC

SpringMVC

学习方式的变化:

	SSM框架的学习:研究官方文档,锻炼自学能力,笔记能力,项目能力
	
	SSM框架整合 = JavaWeb做项目;


​ Spring:IOC和AOP很重要

SpringMVC: SpringMVC的执行流程很重要,其底层是servlet

SpringMVC: SSM框架整合!!!【常常翻找博客】



​ MVC:模型model(dao,service) 视图(View) 控制器(Controller)

​ MVVM



​ dao

​ service

​ servlet

​ jsp/html



​ 前端 数据传输 实体类



​ pojo:User

​ vo:UserVo

​ dto:

1.Servlet操作步骤:

  1. 新建一个maven项目作为父项目,删除src目录;在pom中导入下方依赖
<!--    导入依赖-->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
  1. 建立一个module作为子项目,右键,然后点【Add framework support】;在子项目的pom中导入部分依赖
<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
    </dependency>
</dependencies>
  1. 编写一个servlet类【HelloServlet】继承HttpServlet ;继承(extends)了servlet接口的类就属于servlet了 ;alt+insert然后重写doget和dopost方法 ; 将dopost中的返回值改为doGet(req, resp)
  2. 编写的这个servlet类,是为了处理用户请求的,其中在get这里,需要完成:取得参数、业务逻辑、视图跳转三个步骤
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.获取前端参数
        String method = req.getParameter("method");
        if(method.equals("add")){
            req.getSession().setAttribute("msg","执行了add方法");
        }
        if(method.equals("delete")){
            req.getSession().setAttribute("msg","执行了delete方法");
        }

        //2.调用业务层
        //3.视图转发(request)或重定向(response)
        req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
  1. 将我们需要输出的msp,在test.jsp(在WEB-INF jsp下)中注册一下

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

${msg}
</body>
</html>

  1. 编写完我们的servlet后,需要在web.xml中注册一下才可以
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.wk.servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

<!--    设置超时时间15分钟-->
<!--    <session-config>-->
<!--        <session-timeout>15</session-timeout>-->
<!--    </session-config>-->

<!--    设置欢迎页面-->
<!--    <welcome-file-list>-->
<!--        <welcome-file>index.jsp</welcome-file>-->
<!--    </welcome-file-list>-->


</web-app>
  1. 建立一个form.jsp来配置tomcat
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<form action="/hello" method="post">
    <input type="text" name="method">
    <input type="submit">
</form>
</body>
</html>

  1. 配置并启动tomcat

2. 概述

  1. 我们可以将SpringMVC中所有用到的bean,注册到Spring中
  2. 约定大于配置
  3. 用的人多
  4. 围绕着DispatcherServlet

3.HelloSpringMVC

配置步骤(有待完善):

  1. “我们写完一个controller之后,会跳转到一个视图”(WEB-INF下jsp包下的test.jsp),跳过来后,在body里面写上${msg} ,为了显示我们要输出的内容

  2. 然后在web.xml中配置DispatchServlet
    配置servlet和其mapping

    */ 与 /的区别
    / :只匹配所有的请求,不会去匹配jsp页面

    /* :匹配所有的请求,包含jsp页面

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

<!--    注册DispatcherServlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--        关联一个SpringMVC的配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>

<!--        启动级别:1-->
        <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

可能遇到的问题

  1. 就是我们可能会在代码都正确的情况下,但是不成功,解决方法如下
  2. 打开project structure
  3. 在我们所在的项目的WEB-INF下面,新建一个lib目录
  4. 在里面导入我们所有的依赖,而且要有下方图片的显示
  5. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-llZ9h9Za-1624702852814)(C:\Users\AW\Desktop\SpringMVC.assets\image-20210603135558612.png)]

原理

如果到了深究代码原理的阶段,就看看狂神说springmvc上的SpringMVC执行原理

上面的这些我们会用注解去实现,这才是SpringMVC的精髓,会比上方简单很多

4. 用注解开发SpringMVC

  1. add为web项目,在pom.xml中导入下方所示,在project structure中添加 lib目录,并导入依赖
 <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

注解开发的极简步骤:

  1. 新建一个module
  2. 变成web项目
  3. 配web.xml
  4. 配pom.xml
  5. 在project structure中,添加lib,并导入依赖
  6. 添加hello.jsp
  7. 建立HelloController 这一java文件
  8. Tomcat运行
  9. 特别注意:xml一定要写好,不能有一点错误,特别是标点符号

5.控制器

在类的开头要加上 @Controller

6.RestFul风格

网址的组成中,总是以斜杠 / 分隔各个部分 ; 看起来简洁

7.重定向

不需要在springmvc-servlet.xml中配置视图解析器了,然后只需要在我们新建立的Java文件中进行如下代码的操作

@Controller
public class ModelTest1 {

    @RequestMapping("/m1/t1")
    public String test(Model model){

        //重定向(在不配置视图解析器的情况下)
        model.addAttribute("msg","ModelTest1");
        return "redirect:/index.jsp";
    }
}

8.数据处理

  1. 建立UserController
  2. 建立pojo , 建立User
  3. 在pom中,加入注解
  4. 在UserController中配置
  5. 运行Tomcat

9.乱码问题

启动Tomcat之后,可以向form.jsp中输入数据之后提交,但是可能会显示404,问题在于我们的代码中的form.xml与EncodingController中的地址的相关表示不对

//EncodingController中    @PostMapping("/e/t9")
form.xml之中
<form action="${pageContext.request.contextPath}/e/t9" method="post">

操作步骤:

  1. 建立EncodingController,正常的配置
  2. 打开后输入中文,结果会返回乱码
  3. 我们需要建立一个EncodingFilter作为过滤器
  4. 需要在web.xml中进行配置
    1. 》如果post方法不可以,那么就改为get方法
      》》或者是讲web.xml中的 / 改为 /*
  5. 将中文进行过滤,然后成功输出中文

10.JSON

基础步骤:

  1. 建立一个module
  2. 添加web支持
  3. 在web下面建立一个jsontest.html
  4. 在浏览器打开,审查元素console,即可看到配置
<!DOCTYPE html>
<html lang="en">
<head>

    <meta charset="UTF-8">
        <title>Title</title>

        <script type="text/javascript">
            // 编写一个javascript对象    ES6

            var user = {
                name:"Wk",
                age:3,
                sex:"男"
            };

            console.log(user);
        </script> 
</head>

<body>

</body>
</html>

11.Jackson的使用

使用步骤【springmvc-05-json】:

  1. 导入jackson的依赖,到pom.xml中
  2. 配置web.xml
  3. 配置springmvc-servlet.xml
  4. 建立实体类User
  5. 建立UserControer
  6. 配置tomcat,配置lib;运行

问题解决:

  1. 乱码问题,在@RequestMapping部分,加上一定的配置
    @RequestMapping(value = "/j1",produces = "application/json;charset=utf-8")//生成网页后,可以跳转的页面
  1. 乱码统一解决方法
<!--    JSON乱码问题配置-->
    <mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8"/>
            </bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                        <property name="failOnEmptyBeans" value="false"/>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

12.Ajax

遇见问题:

  1. ClassNotFound,原因是没导入lib目录

ngframework.http.converter.json.MappingJackson2HttpMessageConverter">






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






## 12.Ajax



遇见问题:

1. ClassNotFound,原因是没导入lib目录

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值