• 2 - 配置一个SpringMVC项目(xml配置文件的方式)


    配置一个SpringMVC项目(xml配置文件的方式) —— 具体步骤:

    首先是pom.xml配置文件:

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <modelVersion>4.0.0modelVersion>
    6. <groupId>com.zhoulzgroupId>
    7. <artifactId>springmvc_helloworldartifactId>
    8. <version>1.0-SNAPSHOTversion>
    9. <dependencies>
    10. <dependency>
    11. <groupId>org.springframeworkgroupId>
    12. <artifactId>spring-contextartifactId>
    13. <version>5.2.3.RELEASEversion>
    14. dependency>
    15. <dependency>
    16. <groupId>org.springframeworkgroupId>
    17. <artifactId>spring-webartifactId>
    18. <version>5.2.3.RELEASEversion>
    19. dependency>
    20. <dependency>
    21. <groupId>org.springframeworkgroupId>
    22. <artifactId>spring-webmvcartifactId>
    23. <version>5.2.3.RELEASEversion>
    24. dependency>
    25. dependencies>
    26. project>

    接着,在web下WEB-INF下的 web.xml配置文件 中配置servlet:

    1. "1.0" encoding="UTF-8"?>
    2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    5. version="4.0">
    6. <servlet>
    7. <servlet-name>springmvcservlet-name>
    8. <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
    9. <init-param>
    10. <param-name>contextConfigLocationparam-name>
    11. <param-value>classpath:springmvc.xmlparam-value>
    12. init-param>
    13. servlet>
    14. <servlet-mapping>
    15. <servlet-name>springmvcservlet-name>
    16. <url-pattern>/url-pattern>
    17. servlet-mapping>
    18. web-app>

    然后,现在controller下创建一个类: HelloController——结合下面的springmvc.xml配置文件看

    1. package com.zhoulz.controller;
    2. import org.springframework.web.servlet.ModelAndView;
    3. import org.springframework.web.servlet.mvc.Controller;
    4. import javax.servlet.http.HttpServletRequest;
    5. import javax.servlet.http.HttpServletResponse;
    6. public class HelloController implements Controller {
    7. /*public void hello(){
    8. System.out.println(this.getClass().getName()+"------");
    9. }*/
    10. //实现Controller接口后,会默认调用如下的处理方法(上面的hello()方法就不用了),进行处理
    11. /*public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
    12. //调用该方法后,上面的servlet会报错,是因为缺jar包:tomcat下lib下的两个jar包:jsp-api.jar、servlet.api.jar
    13. return null;
    14. }*/
    15. //进行了一定的简化:
    16. @Override
    17. public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
    18. //注意:返回值是ModelAndView
    19. //加一句话,用来表明进到这个方法里面了
    20. System.out.println(this.getClass().getName()+"-----------");
    21. //1、创建对象
    22. //所以要创建一个ModelAndView对象:
    23. ModelAndView mv = new ModelAndView();
    24. //2、添加视图名称,即要跳转的页面的名称
    25. //设置跳转页面的名称
    26. mv.setViewName("hello");
    27. //3、向前端页面添加的属性值
    28. //然后,再往里面写一些属性值
    29. mv.addObject("hello","hello,springmvc");
    30. //然后把这个对象值返还回去
    31. //return null;
    32. return mv;
    33. }
    34. }

    然后,对应web.xml配置文件,在resources下创建一个springmvc.xml配置文件

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    6. <bean id="/hello" class="com.zhoulz.controller.HelloController">bean>
    7. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    8. <property name="prefix" value="/WEB-INF/page/">property>
    9. <property name="suffix" value=".jsp">property>
    10. bean>
    11. beans>

    然后,我们可以在web下WEB-INF下创建一个(Directory)目录:page,然后再page下创建一个hello.jsp文件

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: dicfin
    4. Date: 2022/11/10
    5. Time: 15:56
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <html>
    10. <head>
    11. <title>Titletitle>
    12. head>
    13. <body>
    14. 欢迎加入xiaozhou
    15. ${hello} <%--把刚才写的hello拿过来--%>
    16. body>
    17. html>

    现在,能找到对应页面的请求吗?

    启动一下项目看看: (记得添加Tomcat配置,具体见上篇文章)

    发请求的话,能跳转到页面吗?

    发什么请求?—— 此时的请求不能随便写了。

    注意,在配置springmvc.xml配置文件的时候,我们配了一个 helloController(即对应controller下的HelloController 类),然后我们找一下它返回对应的结果值是啥。

    项目启动后,会自动跳转浏览器:

    然后,我们就可以发请求了,发一个 hello :(即,在网页地址后面输入:hello)

    发现,出错了:

    错误如下:

    javax.servlet.ServletException: 实例化Servlet类[org.springframework.web.servlet.DispatcherServlet]异常

    以及

    java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

     即:找不到当前这个类了。

    这是我们在使用IDEA时需要严格注意的一个问题:

    我们最终生成的目录Artifacts,点开WEB-INF,发现没有我们所需要的类:

     怎么办?解决如下:

    Artifacts下,选中WEB-INF,右击 Create Directory ,创建 lib 目录,然后选中lib,右击:

     然后,将下面的全部导进来:

     完成以上操作后,重新启动项目,发出请求:

    同样,发一个 hello请求,发现,没有效果,又报错了

     其中,404表示找不到对应的资源文件,即找不到我们对应的请求

    是没有配置请求吗?

    :其实我们是配置了请求的,就在springmvc.xml配置文件下,配了一个bean:

    <bean id="helloController" class="com.zhoulz.controller.HelloController">bean>

    在默认情况下,所对应的bean就是我们要发送请求的名称。

    这里,我们将上面的id名改为: /hello  ——   /  不能少

    <bean id="/hello" class="com.zhoulz.controller.HelloController">bean>

    重新运行,重新发请求 hello,发现,继续报错:

    500  ——  是服务器内部错误

     但是,运行结果中,我们用来验证的一句话 —— 打印了。

    分析:

    500  ——  是服务器内部错误

    而且,上面的错误:

    Circular view path [hello]: would dispatch back to the current handler URL [/springmvc_helloworld_war_exploded/hello] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.

    其实这个错误表示的意思非常简单,即:

    我们最终是要返回到一个页面(即hello页面,因为前面设置的:mv.setViewName("hello");)里去的,但是当前这个hello页面,我们找不到当前这个路径了。

    怎么办?:需要我们在springmvc.xml配置文件中,再配置一个额外的组件:

    1. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    2. <property name="prefix" value="/WEB-INF/page/">property>
    3. <property name="suffix" value=".jsp">property>

    然后重新运行,重新发请求 hello,结果如下:

     运行正常。

    上面是xml配置文件的方式,十分麻烦,后面多为注解的方式。

  • 相关阅读:
    RS笔记:深度推荐模型之多任务学习PLE模型 [RecSys 2020 最佳论文 腾讯]
    【二叉树】树的子结构
    戴尔PowerEdge服务器R450装centos7步骤
    Linux使用bonding实现双网冗余
    高斯积分-Gaussian Quadrature
    matlab⾼级绘图时间距离图像
    2021最新中高级Java面试题目,Java面试题汇总
    D365 根据选中数据行的字段值,控制按钮是否可点击
    如何开启Docker的TCP通信端口
    Spring Boot集成protobuf快速入门Demo
  • 原文地址:https://blog.csdn.net/zhoulizhengZ/article/details/127791243