Spring-mvc学习心得(一)

Sun JDK1.6.0_13 ; MyEslipse10 ; Tomcat ; 谷歌浏览器 ; 

本次操作将用springmvc通过输入网址,返回所需的网页,并在控制台打印输出信息(使用注解的方式)

网页输出:

控制台打印:

建立Springmvc框架,需如下步骤:

1. 导入所需jar包

1.1 导入spring以及springmvc所需jar包

spring所需jar包 百度网盘链接:spring-framework-3.2.13.RELEASE-dist.zip

最少需要导入如下6个jar包:

  spring-beans-3.2.13.RELEASE.jar

  spring-context-3.2.13.RELEASE.jar

  spring-core-3.2.13.RELEASE.jar

  spring-expression-3.2.13.RELEASE.jar

  spring-web-3.2.13.RELEASE.jar

  spring-webmvc-3.2.13.RELEASE.jar

jar包在压缩包解压后 spring-framework-3.2.13.RELEASE-dist文件夹 > spring-framework-3.2.13.RELEASE文件夹 > libs文件夹下寻找,将jar包复制到web项目中WebRoot > WEB-INF lib文件夹下

1.2 导入日志文件所需jar包

log4j所需jar包 百度网盘链接:log4j所需jar包

将日志压缩包里的4个jar包复制到web项目中WebRoot > WEB-INF lib文件夹下,然后在web项目下创建resources目录(Source Folder),将log4j.properties文件复制到resources文件夹下,此为log4j配置文件,备用

选中WebRoot > WEB-INF lib文件夹下所有jar包,右击Build Path > Configure Build Path...

导入jar包步骤完成

2. 配置web.xml

springmvc也是一种servlet,所以需要通过配置web.xml文件,让项目去识别springmvc

打开WebRoot > WEB-INF 文件夹下的web.xml文件

然后我配置的代码如下,会在代码中进行分析:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	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_2_5.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- 下面是我的配置 -->
  
  <!-- 因为springmvc也是servlet的一种,所以通过配置servlet让项目识别 -->
  <servlet>
  	<!-- 因为本项目是springmvc,故servlet命名为springmvc,以供识别 -->
  	<servlet-name>springmvc</servlet-name>
  	<!-- 
  		命名为springmvc的servlet是DispatcherServlet类型的,
  		Ctrl+Shift+H搜索该类DispatcherServlet,赋予这个类的完全限定名,
  		DispatcherServlet也是springmvc的入口,这里不需要过深涉及
  	 -->
  	<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,表示spring容器在启动的时候就要加载这个DispatcherServlet类型的servlet,即自启动 -->
  	<load-on-startup>1</load-on-startup>
  </servlet>
  
  <!-- servlet-mapping标签作用是截获请求的 -->
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<!-- /表示截获根目录下的所有请求 -->
  	<url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

这段配置信息的作用是,在spring的容器启动的时候就加载这个springmvc,然后在有请求出现时,截获所有请求,交给springmvc-servlet.xml文件配置的controller(控制器)去处理,后面会涉及到,此处不做详解。

3. 下边我们开始编写springmvc-servlet.xml配置文件。

(1) 首先创建一个xml文件,在resources目录下右击New > File,命名为springmvc-servlet.xml。

(2) 在文件中导入头部约束配置,打开下载的spring压缩包文件夹,在以下路径:spring-framework-3.2.13.RELEASE-dist\spring-framework-3.2.13.RELEASE\docs\spring-framework-reference\html文件夹下,搜索文件mvc.html并用浏览器打开。在17.3.1下或Ctrl+F搜索关键词"17.3.1",这个目录下的代码片段,复制如下部分粘贴到springmvc-servlet.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: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">

</beans>

然后,再在mvc.html网页中搜索"xmlns:mvc",将定位到的代码中的如下代码插入上述代码中,按上述代码格式插入(后面有完整代码):

xmlns:mvc="http://www.springframework.org/schema/mvc"
http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd

此时头部约束完成,我们开始编写配置文件。

(3) 此例中完整的springmvc-serlvet.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: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/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

	<!-- 
		配置扫描注解,将com.zb.controller目录下的注解扫描注册,
	 	没有这句话,扫描不到注解,带有注解的JavaBean也将是普通的java代码
	 -->
	<context:component-scan base-package="com.zb.controller" />
	<!-- 该标签可以将url自动映射到controller上 -->
	<mvc:annotation-driven />

	<!-- 
		配置视图解析器
	 	基于InternalResourceViewResolver类,Ctrl+Shift+H寻找它的完整限定名,是servlet的
	 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 
			此为前缀,
			controller(控制器)的返回值将自动在前后加上前缀后缀,
			此例中,controller返回index字符串,加上前后缀的完整url是:/WEB-INF/jsp/index.jsp,
			成功定位到此jsp页面
		 -->
		<property name="prefix" value="/WEB-INF/jsp/" />
		<!-- 此为后缀 -->
		<property name="suffix" value=".jsp" />
	</bean>
        
</beans>

<mvc:annotation-driven>:会自动注册RequestMappingHandlerMapping与RequestMappingHandlerAdapter两个Bean,这是Spring MVC为@Controller分发请求所必需的,并且提供了数据绑定支持。

4. 编写controller(控制器)

新建一个类MyController,所在包com.zb.controller下,代码如下:

package com.zb.controller;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class MyController {
	
	private Logger logger = Logger.getLogger(MyController.class);
	
	@RequestMapping("/welcome")
	public ModelAndView index(){
		logger.info("Hello,springmvc!");
		return new ModelAndView("index");
	}
}

@Controller:让springmvc-servlet.xml中的扫描到,并将此类识别为controller(控制器),并自动注册

@RequestMapping("/welcome"):此注解的作用为,将“/welcome”的请求识别并定位用此方法处理请求,使此次注解可以在这个类中写很多的处理方法,只要用此注解加以标示,就可以分清,不必要定义n多个类

logger.info("Hello,springmvc!"); : 在控制台打印日志,用来让我们知道程序运行到此方法

return new ModelAndView("index"); :此处直接返回字符串“index”,用于url拼接,寻找此将jsp页面

5. 发布运行

最后在项目目录/WEB-INF/下建立文件夹jsp,在jsp中建立名为index的jsp页面。完成最终编写

本例使用Tomcat,发布细节在此不再赘述。运行结果如本文开头所示。

本例使用的是注解的方式扫描controller,还有手动编写 配置处理器映射 HandlerMapping 标签的方式:

<!-- 配置处理器映射 HandlerMapping -->
<bean name="/welcome" class="com.zb.controller.MyController" />

而controller的编写如下:

package com.zb.controller;

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

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

public class MyController extends AbstractController {

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
			HttpServletResponse arg1) throws Exception {
		// TODO Auto-generated method stub
		return new ModelAndView("index");
	}
}

此类方式,一句映射对应一个controller,在映射较多的情况下将非常繁琐,所以常用注解的方式

猜你喜欢

转载自blog.csdn.net/qq_35394434/article/details/81559354