SpringMVC:一个简单的web项目,用SpringMVC实现一个简单的页面访问

------------------------------------------------------分割线------------------------------------------------------
---------------------------------------------------以下是正文------------------------------------------------------

一、问题背景以及描述

       在《一个简单的web项目,用Servlet实现一个简单的页面访问》一文中我们用Servlet实现了简单的页面访问,这次我们用SpringMVC框架来精简快捷地实现同样的功能。

二、测试环境

JDK:jdk1.8.0_151
开发软件:IntelliJ IDEA Ultimate 2020.2.3
Maven:apache-maven-3.6.3
Tomcat:apache-tomcat-9.0.41

三、项目结构

在这里插入图片描述

四、操作步骤

1、新建一个普通Maven项目,且将其指定为Web项目,如下图,
温馨提醒:如若不清楚如何新建一个普通Maven项目以及如何将其指定为Web项目,请点击前面链接跳转至对应文章查看。
在这里插入图片描述
2、在子项目[springmvc-02-hellomvc] → \rightarrow [pom.xml]文件中添加以下依赖,

<dependencies>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>5.1.9.RELEASE</version>
	</dependency>
</dependencies>

      添加完依赖后,我们还要确保另一个地方也要有依赖jar包,不然运行项目会报错,具体操作如下:点击[文件] → \rightarrow [项目结构…],弹出以下窗口,
在这里插入图片描述
3、接着我们先来新建一个视图,具体操作如下:在子项目[springmvc-02-hellomvc] → \rightarrow [web] → \rightarrow [WEB-INF]文件夹下新建一个[jsp]文件夹,接着在[jsp]文件夹里新建一个[test.jsp]文件,然后在文件里添加代码[${msg}],如下图,
在这里插入图片描述

4、接着我们在子项目[springmvc-02-hellomvc] → \rightarrow [web] → \rightarrow [WEB-INF] → \rightarrow [web.xml]文件中配置一个DispatcherServlet,添加的代码如下,

<!-- 配置DispatcherServlet:这个是SpringMVC的核心,所有的请求都会经过它 -->
<!-- DispatcherServlet又叫请求分发器,也叫前端控制器 -->
<servlet>
	<servlet-name>springmvc</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<!-- DispatcherServlet要绑定Spring的配置文件 -->
	<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>
    
<!--
	在SpringMVC中,“/”和“/*”的区别
	/表示只匹配所有的请求,不会去匹配jsp页面
	/*表示匹配所有的请求,包括jsp页面
-->
<servlet-mapping>
	<servlet-name>springmvc</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>

5、接着,在子项目[springmvc-02-hellomvc] → \rightarrow [src] → \rightarrow [main] → \rightarrow [resources]文件夹下新建一个Spring配置文件,文件名为[springmvc-servlet.xml],该配置文件就是上面[web.xml]所绑定的,此时,我们往Spring配置文件里添加以下代码,

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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">

    <!-- 处理器映射器 -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
    <!-- 处理器适配器 -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
    <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver" >
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 后缀 -->
        <property name="suffix" value=".jsp" />
    </bean>

	<!-- BeanNameUrlHandlerMapping bean -->
    <bean id="/hello" class="com.yuhoutian.controller.HelloController" />

</beans>

6、接着,我们先在子项目[springmvc-02-hellomvc] → \rightarrow [src] → \rightarrow [main] → \rightarrow [java]文件夹下新建一个[com.yuhoutian.controller]文件夹,然后在[controller]文件夹下新建一个[HelloController.java]文件,紧接着在文件里添加以下代码,

package com.yuhoutian.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloController implements Controller {

    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {

        ModelAndView mv = new ModelAndView();

        //业务代码
        String result = "HelloSpringMVC";
        mv.addObject("msg", result);

        //视图跳转
        mv.setViewName("test");

        return mv;
    }
}

7、到这里,代码就全部完成了!接着是配置Tomcat,具体如何配置在《一个简单的web项目,用Servlet实现一个简单的页面访问》一文中有详细介绍,有需要的小伙伴请自行前往查看,这里就不赘述了,配置完Tomcat就可以运行项目了。
8、最后,我再帮你们捋一下流程调用:
在这里插入图片描述

  • 首先,用户在浏览器上输入网址[http://localhost:8080/hello]后回车,

在这里插入图片描述

  • 回车后用户想访问该网址的请求便会被DispatcherServlet接收,接着DispatcherServlet便会在类路径下搜索[springmvc-servlet.xml]文件并执行它

在这里插入图片描述

  • 在[springmvc-servlet.xml]文件中,首先运行处理器映射器,它会映射到[/hello],接着运行处理器适配器,它会找到并运行[com.yuhoutian.controller.HelloController]文件,

在这里插入图片描述

  • 运行[com.yuhoutian.controller.HelloController]文件后,最终是返回一个[ModelAndView(视图)],[ModelAndView(视图)]里有两部分,一个是业务代码,它会将要显示的内容[HelloSpringMVC]赋给[msg],然后给到[test.jsp] 文件获取并显示出来,另一个是视图跳转,它会回到[springmvc-servlet.xml]文件中的视图解析器,视图解析器会对其进行解析拼接,加上前缀后缀,最终拼接出[/WEB-INF/jsp/test.jsp],

在这里插入图片描述
在这里插入图片描述

五、测试及结果

在这里插入图片描述
所有内容就到这里了,希望对你们有所帮助!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面给出一个简单的留言板的实现步骤: 1. 创建一个 Maven 项目,引入 SpringMVC 相关依赖,包括 spring-webmvcspring-context、spring-jdbc、spring-tx 等。 2. 在 web.xml 中配置 DispatcherServlet,并指定加载 SpringMVC 的配置文件。 ```xml <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.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> ``` 3. 创建 SpringMVC 的配置文件 spring-mvc.xml,在其中配置视图解析器、扫描包、数据源等。可以使用 JdbcTemplate 来操作数据库。 ```xml <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- 扫描包 --> <context:component-scan base-package="com.example.controller"></context:component-scan> <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"></property> <property name="username" value="root"></property> <property name="password" value="123456"></property> </bean> <!-- 配置 JdbcTemplate --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> ``` 4. 创建一个 Controller 类,用于处理用户请求。这里以留言板为例,提供添加留言和查询留言列表的功能。 ```java @Controller public class MessageController { @Autowired private JdbcTemplate jdbcTemplate; @RequestMapping("/addMessage") public String addMessage(Message message) { String sql = "insert into message(name, content) values(?, ?)"; jdbcTemplate.update(sql, message.getName(), message.getContent()); return "redirect:/listMessages"; } @RequestMapping("/listMessages") public String listMessages(Model model) { String sql = "select * from message"; List<Message> messages = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Message.class)); model.addAttribute("messages", messages); return "listMessages"; } } ``` 5. 创建一个实体类 Message,用于表示留言的信息。 ```java public class Message { private int id; private String name; private String content; // getter and setter } ``` 6. 创建两个 JSP 页面,分别用于添加留言和显示留言列表。 addMessage.jsp: ```html <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>添加留言</title> </head> <body> <h2>添加留言</h2> <form action="${pageContext.request.contextPath}/addMessage" method="post"> 姓名:<input type="text" name="name"><br> 内容:<textarea name="content"></textarea><br> <input type="submit" value="提交"> </form> </body> </html> ``` listMessages.jsp: ```html <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>留言列表</title> </head> <body> <h2>留言列表</h2> <table border="1"> <tr> <th>ID</th> <th>姓名</th> <th>内容</th> </tr> <c:forEach var="message" items="${messages}"> <tr> <td>${message.id}</td> <td>${message.name}</td> <td>${message.content}</td> </tr> </c:forEach> </table> <br> <a href="${pageContext.request.contextPath}/addMessage">添加留言</a> </body> </html> ``` 7. 启动 Tomcat访问 http://localhost:8080/ 网址即可进入添加留言页面,添加留言后可以查看留言列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨后天555

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值