现在的位置: 首页 > 综合 > 正文

Spring MVC 四 基础学习

2018年05月09日 ⁄ 综合 ⁄ 共 3741字 ⁄ 字号 评论关闭

不知不觉,这里已经记录到了spring mvc 四了,不过我们前面写的都是比较简单,不过应用场景还是比较少,毕竟没有人一个方法一个Controller的了,这样的话,一个系统都不知道多少个Controller了,当然这样我觉得(以后所有记录 “我觉得”,都是个人观点,不代表任何人,呵呵,免得很多人老是被代表)也不符合面向对象的原则。

如果学过struts或者用过struts的人都知道,一个action(spring叫 controller)有很多的方法的,这样比较合理,嗯,我也是这么认为的,那接下来我们就开始学习下怎么实现一个类多个方法的请求吧。

还是那句话,前面的基础和项目搭建我这里就不在详细描述了,我们这里的基础是衔接 Spring mvc 三。

1、先从java代码开始吧,我们创建一个类,但是这个类是 必须(注意哦,必须)继承 MultiActionController,具体代码如下:

/*
 * Copyright 2013 The JA-SIG Collaborative. All rights reserved.
 * distributed with this file and available online at
 * http://www.etong.com/
 */
package com.lap.taobaouse.controller;

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

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

/**
 * <p>
 * 
 * </p>
 * 
 * @author 劳水生 Exp
 * @version $FileName: LapController.java $Date: 2013-3-20 下午3:07:20 -0400 2013
 * @since 1.0
 * 
 */
public class LapController extends MultiActionController {
	/**
	 * <p>
	 * 查询列表
	 * </p>
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	public ModelAndView queryList(HttpServletRequest request, HttpServletResponse response) {
		ModelAndView modelAndView = new ModelAndView("listTest");
		// TODO业务调用
		return modelAndView;
	}

	/**
	 * <p>
	 * 根据id查询
	 * </p>
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	public ModelAndView queryById(HttpServletRequest request, HttpServletResponse response) {
		ModelAndView modelAndView = new ModelAndView("testInfo");
		// TODO业务调用
		return modelAndView;
	}
}

非常的简单吧,跟我们平时的类差别不大,就是继承了一个父类。

2、接下来我们看看spring配置文件需要添加的内容,先贴代码再说情况,有图有真相嘛,如:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
	<!-- 普通的bean实体 -->
	<bean name="sampleController" class="com.lap.taobaouse.controller.SampleController" />
	
	<bean name="lapController" class="com.lap.taobaouse.controller.LapController">
		<property name="methodNameResolver" ref="parameterMethodResolver" />
	</bean>

	<!-- 实现一类对多方法的方法参数 -->
	<bean id="parameterMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
		<property name="paramName" value="method" />
	</bean>

	<!-- url 管理 -->
	<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/test.htm">sampleController</prop>
				<prop key="/lap.htm">lapController</prop>
			</props>
		</property>
	</bean>

	<!-- 管理视图对象 -->
	<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="cache" value="true" />
		<property name="prefix" value="/static/template/" />
		<property name="suffix" value=".jsp" />
		<property name="contentType" value="text/html;charset=utf-8" />
	</bean>
</beans>

标有颜色的就是此次添加的,跟基础的controller有点不一样的吧,他里面有一个属性,是指请求方法名称类的,包org.springframework.web.servlet.mvc.multiaction下面有很多非常有用的类,有时间的童鞋可以去看看,会让你把配置文件请求写的更优美,特别是   PropertiesMethodNameResolver 类(这里就不详细讲了,这个类确实很实用,想了解的另外讲解吧),

3、最后就是写页面了,根据我们前面几个讲解,页面大家大概知道了吧,两个方法两个页面,代码如下:

listTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="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>一个类对多方法列表</title>
</head>
<body>
<h3>一个类对多方法列表,喂,世界您好!</h3>
</body>
</html>

testInfo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="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>一个类对多方法详细</title>
</head>
<body>
	<h3>一个类对多方法详细,喂,世界您好!</h3>
</body>
</html>

呵呵,我们重点是测试跳转成功,所以没有打算写什么业务,那么请求地址是怎么样呢?

http://域名:端口/项目名称/lap.htm?method(这个是可以自己定义的,就是上面配置文件写的<property name="paramName" value="method" />)=方法名

好了,再次截图一下项目的结构吧:

写的不好大家不要喷哦,如有疑问可以大家一起探讨,转载记得也要留出处哦

抱歉!评论已关闭.