2014-05-08 33 views
0

我正在學習Spring的java配置,並且想在我的.jsp頁面中顯示圖像。我搜索了很多。這個問題很受歡迎,但仍然沒有答案幫助我。圖像仍然不出現。我會很高興有人能幫助我。在JSP中顯示圖像(Spring 3 java配置)

我的目錄樹:

-src 
--main 
---java 
----com 
-----app 
------controller 
-------MainController.java 
------springconfig 
-------WebConfig.java 
--webapp 
---resources 
----images 
-----11706.jpg 
----styles 
---WEB-INF 
----view 
-----home.jsp 
----web.xml 
---index.jsp 

MainController.java

@Controller 
@RequestMapping("/home") 
public class MainController { 

    @RequestMapping(method = RequestMethod.GET) 
    public String loadHomePage(Model m) { 
    m.addAttribute("name", "CodeTutr"); 
    return "home"; 
    } 
} 

WebConfig.java

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = "com.app.controller") 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); 
    } 

    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 

    @Bean 
    public InternalResourceViewResolver viewResolver() { 
    InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
    resolver.setPrefix("/WEB-INF/view/"); 
    resolver.setSuffix(".jsp"); 
    return resolver; 
    } 

} 

回到Home.jsp

<!DOCTYPE HTML> 
<html> 
<head> 
<title>Sample Application</title> 
</head> 
<body> 
    <h1>Hello, ${name}!!!</h1> 
    <img src="/resources/images/11706.jpg" /> 
</body> 
</html> 

的web.xml

<servlet> 
     <servlet-name>sample</servlet-name> 
     <servlet-class> 
      org.springframework.web.servlet.DispatcherServlet 
     </servlet-class> 
     <init-param> 
      <param-name>contextClass</param-name> 
      <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> 
     </init-param> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>com.app.springconfig</param-value> 
     </init-param> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>sample</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

對不起這麼多的代碼片段。希望它能幫助解決問題

回答

1

作爲另一種解決方案,Spring有自己的標籤庫,它允許您輸出相對於應用程序路徑的URL。

在JSP文件的開頭,你必須包括:

<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %> 

然後使用標籤來創建圖像的URL:

<img src="<s:url value="/resources/images/11706.jpg" />" /> 
0

也許你應該嘗試使用<c:url var="imageUrl" value="/resources/images/11706.jpg">模式。您將有<img src="${imageUrl}"></img>。或者,使用div來保存圖像,並使用css將其加載到div中。您還需要在頁面頂部使用<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>來導入jstl taglib,並且您需要確保將jstl作爲模塊依賴項來運行。

+0

應該在哪裏的資源文件夾應該是在web應用程序文件夾? –

+1

在這個例子中,是的,在webapp文件夾的根目錄下。雖然'resources'是一個特別糟糕的名字 - 因爲這是maven用來表示不同的概念。我認爲一個更現代的名字就像'assets'。然而,無論如何,JSP是毫無意義的,所以無論你用它做什麼都是基本錯誤的。 –

+0

那麼正確的方法是什麼? 我卡在顯示圖像 –