当前位置: 代码迷 >> VC/MFC >> 从零开始筹建springMVC项目2——Spring配置与简单Controller创建
  详细解决方案

从零开始筹建springMVC项目2——Spring配置与简单Controller创建

热度:370   发布时间:2016-05-02 03:14:03.0
从零开始搭建springMVC项目2——Spring配置与简单Controller创建

接上篇,打开WEB-INF下的web.xml文件


修改,web.xml完整修改后文件如下

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xmlns="http://java.sun.com/xml/ns/javaee"          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"          id="WebApp_ID" version="3.0">    <!-- Spring相关配置 -->        <servlet>        <servlet-name>dispatcher</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <load-on-startup>1</load-on-startup>    </servlet>        <servlet-mapping>        <servlet-name>dispatcher</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping>        <!-- 用不到的ContextLoaderListener -->    <!--     <context-param><span style="white-space:pre">		</span><param-name>contextConfigLocation</param-name><span style="white-space:pre">		</span><param-value>/WEB-INF/applicationContext.xml</param-value><span style="white-space:pre">	</span></context-param>  <span style="white-space:pre">	</span>    <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener><span style="white-space:pre">	</span> --><span style="white-space:pre">	</span>     <!-- 项目其他配置 -->    <welcome-file-list><span style="white-space:pre">	</span>  <welcome-file>index.jsp</welcome-file><span style="white-space:pre">	</span></welcome-file-list><span style="white-space:pre">	</span><!--     <error-page>        <error-code>401</error-code>        <location>/WEB-INF/views/error/401.jsp</location>    </error-page>    <error-page>        <error-code>404</error-code>        <location>/WEB-INF/views/error/404.jsp</location>    </error-page>     --></web-app></span>
首先web-app标签上设置了一些,那都是命名空间,书写规范什么的。

然后Spring相关配置那里,首先是servlet标签,使用org.springframework.web.servlet.DispatcherServlet后,

spring会自动去WEB-INF目录下读取[servlet-name]-servlet.xml文件,生成相应的Bean。

DispatcherServlet是请求拦截器,每次进行url请求时就会被这个拦截下来,然后引导到正确的方法处。

servlet-mapping是对url请求的监听范围进行限制,这里单“/”表示所有请求,项目复杂的话可能会出现不同请求用不同的servlet去接收,就是在这种地方分歧。


然后有个ContextLoaderListener,这个在其他教程里的web.xml里会被配置,但其实有个DispatcherServlet就够了,这货并不需要...

但具体ContextLoaderListener是什么我也说不清,可以参考下面大神的讲解。

DispatcherServlet详解 ——跟开涛学SpringMVC   http://jinnianshilongnian.iteye.com/blog/1602617


项目其他设置那一块就是设置一下欢迎页(访问项目根路径时显示的页面),还有一些出错时显示的页面。这里不做重点讲解,就放着看看,删掉也行。

我这里就留一个设置欢迎页为项目生成时就已经存在的index.jsp


之后创建上面提到的dispatcher-servlet.xml,和web.xml同在WEB-INF目录下


完整文件如下

<beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:mvc="http://www.springframework.org/schema/mvc"       xmlns:context="http://www.springframework.org/schema/context"       xmlns:p="http://www.springframework.org/schema/p"       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"> 	<context:component-scan base-package="test.spring" /> 	<bean		class="org.springframework.web.servlet.view.InternalResourceViewResolver">		<property name="prefix">			<value>/WEB-INF/views/</value>		</property>		<property name="suffix">			<value>.jsp</value>		</property>	</bean></beans></span>
beans标签的一些设置也都是命名空间,书写规范等,不深究。
<context:component-scan base-package="包名" />很重要,决定这个bean扫描的范围,只有扫到的包这个servlet才会去实现里面的注解(@开头的)

包名这里先写着test.spring,之后创建包时就按照这个名字

<context:component-scan base-package="test.spring.controller,test.spring.serviceImpl, test.spring.daoImpl" /></span>
如果要同时指定多个包的话可以逗号分隔

下面的org.springframework.web.servlet.view.InternalResourceViewResolver主要是针对返回来的view,prefix代表头部修正,suffix代表尾部修正

譬如说后台返回来要导航向"hello",spring就会自动加头加尾,像这里的话就是"/WEB-INF/views/hello.jsp"


这样spring的配置就算完成了,下面做一个controller和一张页面,进行简单的使用测试

首先在WEB-INF下建立hello.jsp等一下就用Controller跳转到这个页面

hello.jsp代码如下

<%@ page language="java" contentType="text/html; charset=UTF-8"%><!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 4 MVC -HelloWorld</title></head><body>	<center>		<h2>Hello World</h2>		<h2>			${message} ${name}		</h2>	</center></body></html></span>

一张简单的jsp页面,第一行显示hello world,第二行显示后台传来的message和name

顺便一提如果第一行的charset不是UTF-8的话想显示出来的中文字会变成乱码


下面开始建Controller,先建立资源文件夹

在src/main下面建立文件夹java,然后右键作为资源文件夹使用,如下图


以后Controller乃至Service,Dao,Entity啥的一般都在这里面写了


在src/main/java下面建立包,包名为test.spring.controller,

包的命名一般是 "代表组织性质的org或者com.项目名.里面Class的用途如controller或者service",这里只是测试用,组织性质就test了


添加一个页面跳转方法,HelloWorldController完整如下

package test.spring.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class HelloWorldController {		@RequestMapping("/hello")	public ModelAndView showMessage(@RequestParam(value = "name", required = false, defaultValue = "World") String name) {		System.out.println("in controller"); 		ModelAndView mv = new ModelAndView("hello");		mv.addObject("message", "Controller");		mv.addObject("name", name);		return mv;	}}</span>
[email protected]

@RequestMapping表示用什么URL可以访问到这个方法,

[email protected]?

[email protected]?


这样项目算是完成,剩下就是编译运行了

右键项目依次运行Maven clean和Maven Install


看到BUILD SUCCESS就说明编译成功了


右键项目Run As -> Run on Server


选择tomcat7.0,Finish


初始页面


访问/hello跳转到hello.jsp




hello.jsp里的Controller和world字样是后台传过来的,可以在url请求时设置参数改掉


大功告成!

下一篇试试Service和Dao的注解

  相关解决方案