Maven SpringMVC项目基本搭建(备忘)

本文介绍如何从零开始搭建一个Spring MVC项目,并通过JSON格式进行前后端数据交互。主要内容包括项目创建、配置文件设置、基类实现及控制器编写等。

简述:

可以把将要实现的MVC看做一个基于函数名的servlet的访问

如果使用ModelAndView就能实现页面跳转,但是我这里还是使用支持前台JS的异步调用形式,也就是返回一个JSON格式数据到前台,



步骤:

1. 新建Maven SpringMVC项目

按步骤新建


2. 新建之后如下图项目结构

删除 config包(这个是Maven构造项目时自动生成的,这里准备使用配置文件来加载)



3. 添加Gson包, 因为返回的是JSON格式数据所以需要, 有一个基类用来实现Response中返回数据

此时已经加入了Maven依赖项了



4. 构建web.xml

在这个xml配置文件中,吧关于mvc的servlet项加入到spring-mvc.xml中

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>SpringMVCProject</display-name>
	<servlet>
		<servlet-name>springServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath:/applicationContext*.xml
            /WEB-INF/applicationContext*.xml
		</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<session-config>
		<session-timeout>20</session-timeout>
	</session-config>
</web-app>


5. 构建spring-mvc.xml

在这个文件中涉及到url的映射(在controller中的函数映射)

spring-mvc.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:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
	
    
    <bean id="urlMapping"
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<value>
				/home=homeController
			</value>
		</property>
		<property name="order" value="1" />
	</bean>
	
	<bean id="homeController" class="com.anialy.project.springmvc.controller.HomeController">
	    <property name="methodNameResolver" ref="paramResolver" />
	</bean>
	
	<!-- 定义JSP --> 
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/"/>
		<property name="suffix" value=".jsp"/>
	</bean>
	
   <bean id="paramResolver"
		class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
		<property name="paramName" value="action" />
		<property name="defaultMethodName" value="test" />
	</bean>
</beans>



6. 基类实现(现支持JSON的转换)

SpringMVCBaseController

package com.anialy.project.springmvc.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

import com.google.gson.Gson;


public class SpringMVCBaseController extends MultiActionController {

	private static Gson gson = new Gson();
	
	/**
	 * 以文本形式下发数据
	 * @param response
	 * @param responseText
	 */
	protected void responseOutWithText(HttpServletResponse response,
			String responseText) {
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html");
		PrintWriter out = null;
		try {
			out = response.getWriter();
			out.println(responseText);
			out.close();
			logger.debug("下发的数据是");
			logger.debug(responseText);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (out != null) {
				out.close();
			}
		}
	}
	
	
	/**
	 * 以JSON格式输出
	 * @param response
	 */
	protected void responseOutWithJson(HttpServletResponse response,
			Object obj) {
		response.setCharacterEncoding("UTF-8");
		response.setContentType("application/json; charset=utf-8");
		PrintWriter out = null;
		try {
			out = response.getWriter();
			String responseJsonStr = gson.toJson(obj);
			out.append(responseJsonStr);
			logger.debug("下发的数据是");
			logger.info(responseJsonStr);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (out != null) {
				out.close();
			}
		}
	}
}



7 Controller类实现

HomeController.java

package com.anialy.project.springmvc.controller;

import java.io.IOException;

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

import org.springframework.stereotype.Controller;

@Controller
public class HomeController extends SpringMVCBaseController{
//  纯MVC 的视图界面返回
//	@RequestMapping(value="/")
//	public ModelAndView test(HttpServletResponse response) throws IOException{
//		return new ModelAndView("home");
//	}

	public void test(HttpServletRequest request
			, HttpServletResponse response) throws IOException{
		responseOutWithText(response, "Hello");
	}
}


效果:






评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值