spring mvc是当前最为流行的开发框架之一 有了它 我们可以高效方便的处理程序中的业务逻辑 因此在开发的时候 spring mvc主要用于业务层 要进一步学习spring mvc 我们首先要知道 spring mvc的基本原理
一、基本原理
spring mvc 中的 m 代表 模型 v 代表试图 c代表控制器 在这个框架中 有一个前端控制器 就是 DispatcherServlet
用来负责发送请求到合适的控制器 最后在渲染出视图来呈现给大家 下面 我们请看下图
首先是 第一步 用户浏览器发送了一个请求给 前置在控制器
第二步将请求传给处理映射器
然后在第三步找到合适的控制器
第四步 控制器返回模型及视图名称 传给前端控制器
第五步 通过前端控制器在第六步找到视图解析器 最后第七步解析出视图并且进行响应
通过刚才的基本原理介绍 我们来看看在eclipse中如何搭建一个spring mvc程序吧?
工具: jdk1.7 eclipse tomcat 7.0
所需jar包:
工程目录图:
想要源码的可以加我QQ:1725576075 也可以加QQ群 464096313去群共享要
下面我们进行第一步 配置前置控制器
打开web.xml 写入:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3/2001/XMLSchema-instance" xmlns="http://java.sun/xml/ns/javaee" xsi:schemaLocation="http://java.sun/xml/ns/javaee http://java.sun/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>spring</display-name>
<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>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
接着我们配置完前置控制器以后 我们要配置spring mvc 在springmvc.xml中写入(这里采用的是注解模式 因此该配置也是按照注解模式来配置bean)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework/schema/beans"
xmlns:xsi="http://www.w3/2001/XMLSchema-instance"
xmlns:context="http://www.springframework/schema/context"
xmlns:mvc="http://www.springframework/schema/mvc"
xsi:schemaLocation="http://www.springframework/schema/beans http://www.springframework/schema/beans/spring-beans.xsd
http://www.springframework/schema/context http://www.springframework/schema/context/spring-context-4.0.xsd
http://www.springframework/schema/mvc http://www.springframework/schema/mvc/spring-mvc-4.0.xsd">
<mvc:annotation-driven/>
<mvc:resources location="/WEB-INF/resources/images/" mapping="/images/**"/>
<mvc:resources location="/WEB-INF/resources/js/" mapping="/js/**"/>
<mvc:default-servlet-handler/>
<context:component-scan base-package="com.project.springmvc"/>
<!-- 配置视图解析器 如何把handler 方法返回值解析为实际的物理视图 根据控制器返回的字符串拼接成jsp路径:/WEB-INF/jsp/xx.jsp -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name = "prefix" value="/WEB-INF/resources/"></property>
<property name = "suffix" value = ".jsp"></property>
</bean>
<!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name = "prefix" value="/WEB-INF/resources/"></property>
<property name = "suffix" value = ".jsp"></property>
</bean> -->
</beans>
请注意 在这里我配置了mvc标签 该标签是用来加载静态文件的 如果不加上这个标签 spring mvc默认会对除了jsp文件以外的文件进行拦截 因此就会出现图片 css js之类的静态文件显示不出来的问题
其语法为:
<mvc:annotation-driven/>
<mvc:resources location="静态文件路径" mapping="映射的路径 也就是说你在页面中要引用这个路径名才可以访问到静态文件"/>
<mvc:default-servlet-handler/>
控制器代码
package com.project.springmvc;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
import com.project.model.Shop;
import com.project.model.UserInfo;
@Controller
public class Index {
@RequestMapping(value="")
public String index(){
return "index";
}
}
}
@Controller:/*该注解代表该类为一个spring mvc控制器*/
@RequestMapping(value="")/*该注解为请求的路径名在value设置路径名 当浏览器请求路径名相同时 触发控制器*/
index.jsp代码
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3/TR/html4/loose.dtd">
<html>
<head>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>返回这里</title>
</head>
<body>
第一个jsp页面<img alt="" src="/images/BG_14.jpg">
</body>
</html>
注意 因为我们在前面mvc标签中设置的静态文件映射路径为 /images/ 因此这里的src 路径也要写上 images
更多推荐
Spring mvc基础入门详解
发布评论