SpringMVC之一个Controller多个方法及静态文件访问实例

来源:互联网 发布:矩阵乘法 编辑:程序博客网 时间:2024/06/05 08:27

之前完成了SpringMVC的配置及HelloWorld的实现
接着继续SpringMVC的学习
这次涉及到两个方面,一个是多方法Controller,另一个是对静态文件的访问
环境:
IDE:IDEA17
SpringMVC版本:4.3
JDK版本:1.7
Tomcat:7.0


首先,在之前HelloWorldController的实例上新建一个Controller,命名为MultiController.java,然后在web根目录下新建一个img文件夹,用来存放静态的图片文件,再在这个img文件夹下放入两张图片,分别命名为img1,img2,再新建img1.jsp和img2.jsp

目录结构一览
要使用多方法Controller,需要在SpringMVC的配置文件里重新配置bean

<?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:mvc="http://www.springframework.org/schema/mvc"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">    <bean name="/multi" class="Controller.MultiController">        <property name="methodNameResolver">            <ref bean="paramMethodResolver"/>        </property>    </bean>    <bean name="/helloworld" class="Controller.HelloWorldController"></bean>    <!--多方法-->    <bean id="paramMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">        <property name="paramName" value="action"></property>    </bean>    <!-- 静态资源访问 -->     <mvc:resources location="/img/" mapping="/img/**"/>      <!--ViewResolver 视图解析器-->    <!--用于支持Servlet、JSP视图解析-->    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>        <property name="prefix" value=""/>        <property name="suffix" value=".jsp"/>    </bean></beans>```多出来的  `    <!--多方法-->    <bean id="paramMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">        <property name="paramName" value="action"></property>    </bean>`  就是多方法Controller的配置  以及另外一个多出来的  `    <bean name="/multi" class="Controller.MultiController">        <property name="methodNameResolver">            <ref bean="paramMethodResolver"/>        </property>    </bean>`  则是配置了一个新的路径接着编写MultiController.java  <div class="se-preview-section-delimiter"></div>

package Controller;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by seekhow on 2017/6/22.
*/
public class MultiController extends MultiActionController {
public ModelAndView img1(HttpServletRequest request, HttpServletResponse response){
System.out.println(“—-img1—-“);
return new ModelAndView(“/img1”,”method”,”img1”);
}

public ModelAndView img2(HttpServletRequest request,HttpServletResponse response){    System.out.println("----img2----");    return new ModelAndView("/img2","method","img2");}

}

然后是img1.jsp<div class="se-preview-section-delimiter"></div>

<%@ page language=”java” contentType=”text/html; charset=UTF-8”
pageEncoding=”UTF-8”%>




Insert title here


多方法controller及静态图片访问
本次访问的图片是${method}
img1

img2.jsp<div class="se-preview-section-delimiter"></div>

<%@ page language=”java” contentType=”text/html; charset=UTF-8”
pageEncoding=”UTF-8”%>




Insert title here


多方法controller及静态图片访问
本次访问的图片是${method}
img2


``
代码编写完成,运行试试
输入
http://localhost:8888/multi?action=img1`

OK
这里的action就是配置多方法时property标签里的value值
img1就是MultiController.java里定义的方法名
如果你发现这种情况

就是多方法的包出现了绿色的横线,然后提示说这个用法已经背遗弃掉了,不管它,能够照常运行的,不过是什么意思呢,是这样,SpringMVC2.5以后就可以使用注解版本,3+版本之后就进一步完善注解方式的,XML方式就很少使用了,所以IDEA提醒我们这个东西已经被遗弃了,接下来会接触到注解方式的使用

<mvc:resources location="/img/" mapping="/img/**"/> 这个是mvc标签,来告诉SpringMVC的拦截机制不要拦截访问这个目录的请求
如我输入http://localhost:8888/multi?action=img2

也能很顺利的访问
本次实例成功

原创粉丝点击