在SpringMVC中,访问静态资源是非常常见的操作。本文将介绍SpringMVC访问静态资源的三种方式。
1. 使用标签
<mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>
在上面的配置中,我们将“/static/**”映射到“/WEB-INF/static/”目录下。这意味着,当我们访问“/static/xxx”时,SpringMVC会自动将请求映射到“/WEB-INF/static/xxx”文件。
2. 使用标签
<mvc:default-servlet-handler/>
在上面的配置中,我们将默认的Servlet处理器配置为Tomcat的默认Servlet处理器。这意味着,当我们访问静态资源时,SpringMVC会将请求转发给Tomcat的默认Servlet处理器来处理。
3. 使用@Controller注解
我们还可以使用@Controller注解来访问静态资源。例如:
@Controller
public class MyController {
@GetMapping("/static/{filename:.+}")
public void getFile(@PathVariable String filename, HttpServletResponse response) {
try {
InputStream inputStream = new FileInputStream(new File("/WEB-INF/static/" + filename));
IOUtils.copy(inputStream, response.getOutputStream());
response.flushBuffer();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们使用@GetMapping注解来定义访问静态资源的URI。我们使用@PathVariable注解来接收URI中的参数。我们使用HttpServletResponse对象来输出静态资源的内容。
示例1:使用标签
假设我们有一个名为“index.html”的静态页面,我们可以使用
<mvc:resources mapping="/index.html" location="/WEB-INF/static/index.html"/>
在上面的配置中,我们将“/index.html”映射到“/WEB-INF/static/index.html”文件。这意味着,当我们访问“/index.html”时,SpringMVC会自动将请求映射到“/WEB-INF/static/index.html”文件。
示例2:使用@Controller注解
假设我们有一个名为“logo.png”的静态图片,我们可以使用@Controller注解来访问该图片。例如:
@Controller
public class MyController {
@GetMapping("/static/logo.png")
public void getFile(HttpServletResponse response) {
try {
InputStream inputStream = new FileInputStream(new File("/WEB-INF/static/logo.png"));
IOUtils.copy(inputStream, response.getOutputStream());
response.flushBuffer();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们使用@GetMapping注解来定义访问静态资源的URI。我们使用HttpServletResponse对象来输出静态资源的内容。当我们访问“/static/logo.png”时,SpringMVC会自动将请求映射到该方法中,然后输出“/WEB-INF/static/logo.png”文件的内容。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC访问静态资源的三种方式小结 - Python技术站