springmvc连接mysql_[SpringMVC]-SpringMVC架构-02-SpringMVC入门基础

本文介绍了SpringMVC入门基础,包括商品订单业务的需求分析、开发环境搭建、SpringMVC流程配置,如web.xml与springmvc.xml的配置,以及处理器开发、视图完成和项目部署。讲解了非注解和注解方式的HandlerMapping处理器映射器和HandlerAdapter处理器适配器的使用,并通过mvc:annotation-driven实现自动化配置。
摘要由CSDN通过智能技术生成

SpringMVC学习

SpringMVC入门基础

商品订单业务

a.需求分析

通过商品订单业务学习SpringMVC相关的功能(利用之前的表格数据进行操作)

e99cf04d0edd481df3b33f8bb81caf10.png

主要测试内容:简单实现商品的查询列表功能

b.搭建开发环境

Mysql 5.7

Jdk1.8

Spring5.0.8

  • 导入相关的jar包(在之前的项目的基础上添加spring-webmvc jar包)

pom.xml:

 <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring-version>5.0.8.RELEASE</spring-version>
    <logging-version>1.2</logging-version>
    <mysql-version>5.1.6</mysql-version>
    <c3p0-version>0.9.5.2</c3p0-version>
    <druid-version>1.1.10</druid-version>
    <dbcp-version>1.4</dbcp-version>
    <jstl-version>1.2</jstl-version>
  </properties>
 
  <dependencies>
  	<!-- spring框架相关 -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-context</artifactId>
	    <version>${spring-version}</version>
	</dependency>
 
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-test</artifactId>
	    <version>${spring-version}</version>
	    <scope>test</scope>
	</dependency>
 
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-aspects</artifactId>
	    <version>${spring-version}</version>
	</dependency>
 
	<!-- spring数据库连接相关: mysql数据库连接、druid数据库连接池-->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-jdbc</artifactId>
	    <version>${spring-version}</version>
	</dependency>
 
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>${mysql-version}</version>
	</dependency>
 
	<dependency>
	    <groupId>com.alibaba</groupId>
	    <artifactId>druid</artifactId>
	    <version>${druid-version}</version>
	</dependency>
 
	<!-- springMVC框架相关 -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-webmvc</artifactId>
	    <version>${spring-version}</version>
	</dependency>
 
	<!-- 日志相关 -->
	<dependency>
	    <groupId>commons-logging</groupId>
	    <artifactId>commons-logging</artifactId>
	    <version>${logging-version}</version>
	</dependency>
 
	<!-- jstl表达式相关 -->	
	<dependency>
	    <groupId>javax.servlet</groupId>
	    <artifactId>jstl</artifactId>
	    <version>${jstl-version}</version>
	</dependency>
 
  </dependencies>
 
  <build>
    <finalName>Spring_Day04</finalName>
     <plugins>  
        <plugin>  
            <groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-compiler-plugin</artifactId>  
            <version>2.3.2</version>  
            <configuration>  
                <source>1.8</source>  
                <target>1.8</target>  
            </configuration>  
        </plugin>  
    </plugins>  
  </build>

c.springMVC流程配置

<1>配置web.xml文件(前端控制器)

在src/main/webapp/WEB-INF下的web.xml中配置Spring的前端控制器

配置形式:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">	
<display-name>Archetype Created Web Application</display-name>
<servlet>
		<servlet-name>指定名称</servlet-name>
		<!-- org.springframework.web.servlet.DispatcherServlet -->
		<servlet-class>DispatcherServlet类全名</servlet-class>
		<!-- 通过设置contextConfigLocation属性指定加载配置文件的位置 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>指定名称</servlet-name>
		<url-pattern>*.action</url-pattern>
	</servlet-mapping>
</web-app>

4bc557cdf3101e7bb825499c619cf112.png

<2>配置springmvc.xml的文件

  • 在resource目录下创建springmvc.xml文件,引入spring-mvc的命名空间
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
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/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
......配置内容
</beans>
  • 在springmvc.xml中主要需要配置如下内容
  • 配置处理器映射器
  • 配置处理器适配器
  • 配置处理器
  • 配置视图解析器
        <!-- 
		1.配置处理器映射器:BeanNameUrlHandlerMapping 
		BeanNameUrlHandlerMapping表示将定于的Bean的名字作为请求的url,
		需要将编写的controller在spring中进行配置并且需要指定bean的name为请求的url
	-->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
 
	<!-- 
		2.配置处理器适配器:SimpleControllerHandlerAdapter 
		SimpleControllerHandlerAdapter即简单控制器处理器适配器,
		所有实现了Controller接口的Bean作为SpringMVC的后端控制器
	-->
	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
 
	<!-- 
		3.配置处理器:ItemsController(自定义开发的处理器) 
		自定义处理器实现Controller接口,传送数据到指定视图
	-->
	<bean id="处理器id" name="指定名称作为访问路径" class="处理器类全名"></bean>
 
	<!-- 4.配置视图解析器:InternalResourceViewResolver -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>

处理器的开发(Handler) Controller

ItemsController.java:

public class ItemsController implements Controller{

	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		// 模拟数据库实现数据的封装
		Items item1 = new Items();
		item1.setId(1);
		item1.setName("宏碁笔记本");
		item1.setPrice(8000f);
		item1.setCreatetime(new Date());
		item1.setDetail("宏碁笔记本超级无敌卡的");

		Items item2 = new Items();
		item2.setId(2);
		item2.setName("联想笔记本");
		item2.setPrice(6000f);
		item2.setCreatetime(new Date());
		item2.setDetail("联想笔记本也是超级无敌卡的");
		
		Items item3 = new Items();
		item3.setId(3);
		item3.setName("苹果笔记本");
		item3.setPrice(10000f);
		item3.setCreatetime(new Date());
		item3.setDetail("宏碁笔记本超级好用");
      
		List list = new ArrayList();
		list.add(item1);
		list.add(item2);
		list.add(item3);
		
		// 创建ModelAndView对象,将数据转发到指定页面
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("list",list);
		modelAndView.setViewName("WEB-INF/jsp/list.jsp");
		// 返回该ModelAndView对象
		return modelAndView;
	}
}

<3>完成开发视图

list.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Spring入门程序测试</title>
</head>
<body>

	<table border="1">
		<tr>
			<th>产品id</th>
			<th>产品名称</th>
			<th>产品价格</th>
			<th>生产日期</th>
			<th>详细描述</th>
			<th>具体操作</th>
		</tr>

		<c:forEach var="item" items="${list }">
			<tr>
				<td>${item.id }</td>
				<td>${item.name }</td>
				<td>${item.price }</td>
				<td>${item.createtime }</td>
				<td>${item.detail }</td>
				<td><a href="#">修改</a> <a href="#">删除</a></td>
			</tr>
		</c:forEach>

	</table>
</body>
</html>

<4>发布项目到tomcat进行测试

访问地址:(与上述处理器配置的访问地址相关)

http://localhost:8080/SpringMVC_Base/queryItems.action

1d3bb0dafa1ad4cfb5c67759ae03e664.png

DispatcherServlet

0ecba7a23a0d18dc7ab1f14be4c777d3.png

DispatcherServlet.properties:(简单参考)

# Default implementation classes for DispatcherServlet's strategy interfaces.
# Used as fallback when no matching beans are found in the DispatcherServlet context.
# Not meant to be customized by application developers.

org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver

org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver

org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping

org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,
	org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver,
	org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,
	org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver

org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator

org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver

org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager

非注解方式的HandlerMapping处理器映射器

HandlerMapping负责根据requst请求找到对应的Handler处理器

在上述案例的基础上进行修改相应的springmvc.xml文件

<1>BeanNameUrlHandlerMapping

d24183d4e9628f930b4fb4a5336baf88.png

<2>SimpleUrlHandlerMapping

660c3c8988c9316977701d0eaa0e2ae0.png

上述两种处理器映射方式是可以同时并存的,哪一个路径对应哪个映射,就执行哪个映射来确定具体的Handler

非注解方式的HandlerApater处理器适配器

<1>SimpleControllerHandlerAdapter

1f0c730b0146bff090249cc37ec59266.png

对应的controller实现:

cad74b16a57d400095c243fdabb99c09.png

<2>HttpRequestHandlerAdapter

5e4ff905faa4546e0ce3fc5f3045ca0d.png

对应的controller实现:

f050a465e6ba2ab93194a3768df4afea.png

不同的处理器适配器对应着不同的处理器,根据实际需求去完成相关配置即可

<3>最终的配置文件springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
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/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">

	<!-- 
		1.配置处理器映射器:BeanNameUrlHandlerMapping 
		BeanNameUrlHandlerMapping表示将定于的Bean的名字作为请求的url,
		需要将编写的controller在spring中进行配置并且需要指定bean的name为请求的url
	-->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
	<!-- 配置处理器映射器形式2:SimpleUrlHandlerMapping -->
	<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/queryItems2.action">itemsController</prop>
				<prop key="/queryItems3.action">itemsController</prop>
				<prop key="/queryItems4.action">itemsController2</prop>
			</props>
		</property>
	</bean>
 
	<!-- 
		2.配置处理器适配器:SimpleControllerHandlerAdapter 
		SimpleControllerHandlerAdapter即简单控制器处理器适配器,
		所有实现了Controller接口的Bean作为SpringMVC的后端控制器
	-->
	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
 
	<!-- 
		配置处理器适配器方式2:HttpRequestHandlerAdapter 
		其控制器相应地需要实现HttpRequestHandler接口
	--> 
	<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
 
 
	<!-- 
		3.配置处理器:ItemsController(自定义开发的处理器) 
		自定义处理器实现Controller接口,传送数据到指定视图
	-->
	<bean id="itemsController" name="/queryItems.action" class="com.guigu.springmvc.a_quickstart.ItemsController"></bean>
	<bean id="itemsController2" class="com.guigu.springmvc.a_quickstart.ItemsController2"></bean>
 
	<!-- 4.配置视图解析器:InternalResourceViewResolver -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
</beans>

上述配置使得下列url均能正确访问数据

http://localhost:8080/SpringMVC_Base/queryItems.action

http://localhost:8080/SpringMVC_Base/queryItems2.action

http://localhost:8080/SpringMVC_Base/queryItems3.action

http://localhost:8080/SpringMVC_Base/queryItems4.action

注解方式的映射器和适配器

采用注解方式配置映射器和适配器,在Controller不需要实现任何接口,只需要使用@ResultMapping(“控制器名称”)进行注解即可,但需要在springmvc.xml中配置组件扫描器,用以扫描指定的包下的文件

  • 注解方式的映射器

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping

  • 注解方式的适配器

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

Springmvc.xml配置如下:

ae6aeb5ed5d7a8f4f03c14c1ce813ee1.png

对应Controller层代码编写如下所示:

19be15c06c79f0ce6d8e2ec358bcd6e2.png

测试结果:

访问链接:http://localhost:8080/SpringMVC_Base/queryItems.action

5b5f0b3b0516a83cfa47c3bd3df80318.png

mvc:annotation-driven(重点掌握)

将上述所有内容进一步简化,通过使用springMVC的mvc标签完成数据的自动配置,springmvc.xml中的配置如下,controller层编写代码参考上述即可

9d428c9278adbcb7402ace3937113083.png

数据正常访问

http://localhost:8080/SpringMVC_Base/queryItems.action

986bdbf5b0c8df6ea00d08559c790cd6.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值