2014-04-11 4 views
0

이 문제와 관련하여 많은 질문이 있지만 내 문제는 다르기 때문에 이전 질문을 기반으로 한 해결책을 찾지 못했습니다. 나는 봄 MVC를 사용하고 있으며, 브라우저가 이미지를 렌더링하지 않는다는 것을 알기 전까지 모든 것이 잘 동작했다. 그런 다음 내 브라우저에 내 이미지의 전체 URL을 제공하려고 시도했는데 404가 반환되었습니다. 시도했습니다. <mvc:default-servlet-handler/> <mvc:resources mapping="/images/**" location="/images/"/>정적 리소스 및 스프링 mvc

이미지가 표시되지 않지만 어떻게 든 내 컨트롤러가 망가져서 처리하지 못합니다. url 매핑. 나는 당신에게 나의 코드의 대부분을 보여줄 것이다. 여기

web.xml에입니다 :

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 


<servlet> 
    <servlet-name>spring-brains</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    <multipart-config/> 
</servlet> 
<servlet-mapping> 
    <servlet-name>spring-brains</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file> 
     index.jsp 
    </welcome-file> 
</welcome-file-list> 
<filter> 
    <filter-name>characterEncodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>characterEncodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/spring-brains-servlet.xml 
    </param-value> 
</context-param> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
<jsp-config> 
    <jsp-property-group> 
     <url-pattern>*.jsp</url-pattern> 
     <page-encoding>UTF-8</page-encoding> 
    </jsp-property-group> 
</jsp-config> 
여기

스프링 뇌-servlet.xml에 :

<?xml version="1.0" encoding="UTF-8"?> 

<context:component-scan base-package="bobi.spring.spring.brains"/> 

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> 
    <property name="prefix" value="/"></property> 
    <property name="suffix" value=".jsp"></property> 
</bean> 

<mvc:default-servlet-handler/> 
<mvc:resources mapping="/images/**" location="/images/"/> 

<security:debug/> 

<security:http pattern="/admin/login.jsp" security="none"/> 
<security:http auto-config="true"> 
    <security:intercept-url pattern="/admin/**" access="ROLE_USER" /> 
    <security:form-login login-page="/admin/login.jsp" default-target-url="/admin/admin.jsp" always-use-default-target="true"/>    
    <security:logout logout-success-url="/admin" /> 
</security:http> 

<bean class="service.DummyUserService" id="user-service-bobi"/> 

<security:authentication-manager> 
    <security:authentication-provider user-service-ref="user-service-bobi"> 
    </security:authentication-provider> 
</security:authentication-manager> 
그래서 기본적으로 나는이 개 질문이

/* 


* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package bobi.spring.spring.brains; 

import domains.User; 
import java.io.IOException; 
import java.util.HashMap; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.MultipartConfig; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.Part; 
import org.apache.commons.fileupload.FileUploadException; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 
import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.CookieValue; 
import org.springframework.web.bind.annotation.PathVariable; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.servlet.ModelAndView; 
import service.Authentication; 
import service.ProductManager; 
import service.Service; 

/** 
* 
* @author BOBBOO 
*/ 
@MultipartConfig 
@Controller 
@RequestMapping(value = "/admin") 
public class AdminController { 

protected final Log logger = LogFactory.getLog(getClass()); 

@RequestMapping(value = "/{adminview}") 
public ModelAndView getAdminView(@PathVariable("adminview") String view) { 

    switch (view) { 
     case "login": { 
      return new ModelAndView("admin/login"); 
     } 
     case "admin": { 
      return new ModelAndView("admin/admin"); 
     } 
     case "newcategory": { 
      return new ModelAndView("admin/newcategory"); 
     } 
     case "newproduct": { 
      return new ModelAndView("admin/newproduct", "categories", Service.getCategories()); 
     } 
     case "newuser": { 
      return new ModelAndView("admin/newuser"); 
     } 
     case "products": { 

      return new ModelAndView("admin/products", "products", Service.getProducts()); 
     } 
     default: 
      return new ModelAndView("admin/login"); 
    } 
} 

@RequestMapping("/form") 
public void formHandler(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException, FileUploadException { 

    String formId = request.getParameter("formId"); 
    request.setCharacterEncoding("UTF-8"); 
    if (formId != null && formId.equals("newcat")) { 

     service.Admin.saveCategory((HashMap) ServletUtils.prepareRequestArguments(request)); 
     response.sendRedirect("admin/newcategory"); 
    } else if (formId != null && formId.equals("login")) { 
     Authentication auth = new Authentication(); 
     User user = service.Service.getUser(request.getParameter("username")); 

    } else if (formId != null && formId.equals("newuser")) { 
     Authentication auth = new Authentication(); 
     boolean success = auth.CheckUserName(request.getParameter("username")); 

     if (success) { 
      service.Admin.saveUser((HashMap) ServletUtils.prepareRequestArguments(request)); 

      response.sendRedirect("admin/newuser"); 
     } else { 
      response.sendRedirect("admin/login"); 
     } 
    } 

} 

@RequestMapping(value = "/upload") 
public void productAdd(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException { 
    if (ServletFileUpload.isMultipartContent(request)) { 

     request.setCharacterEncoding("UTF-8"); 
     Part part = request.getPart("picture"); 
     String path = service.Constants.LINUX_ABS_PROJECT_PATH + System.getProperty("file.separator") + "images"; 
     Service serv = new Service(); 
     String kategorija = request.getParameter("category"); 
     System.out.println(kategorija); 
     try { 
      serv.SaveFile(path, part); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     ServletUtils util = new ServletUtils(); 
     try { 
      service.Admin.saveProduct((HashMap) util.prepareRequestMultiPartArguments(request)); 
     } catch (Exception e) { 
      logger.info("Error while saving product @ AdminController, line 92!!"); 
     } 

     response.sendRedirect(request.getContextPath() + "/admin/admin.jsp"); 

    } 
} 

@RequestMapping(value="/edit/{object}/{objectId}") 
public ModelAndView editTable(@PathVariable("object") String editItemType, 
           @PathVariable("objectId") String itemId){ 
switch(editItemType){ 
    case "product":{ 
     return new ModelAndView("admin/editproduct", "product", Service.getProduct(Integer.parseInt(itemId))); 
    } 
    case "category":{ 
    return new ModelAndView("admin/editcategory", "category", Service.getProduct(Integer.parseInt(itemId))); 
    } 
    case "user":{ 
    return new ModelAndView("admin/edituser", "user", Service.getProduct(Integer.parseInt(itemId))); 
    } 
} 
return new ModelAndView("admin/admin"); 
} 

@RequestMapping(value="/formedit") 
public void editForm(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException, FileUploadException { 

    String formId = request.getParameter("formId"); 
    request.setCharacterEncoding("UTF-8"); 
    if (formId != null && formId.equals("newcat")) { 

     service.Admin.saveCategory((HashMap) ServletUtils.prepareRequestArguments(request)); 
     response.sendRedirect("admin/newcategory"); 
    } else if (formId != null && formId.equals("login")) { 
     Authentication auth = new Authentication(); 
     User user = service.Service.getUser(request.getParameter("username")); 

    } else if (formId != null && formId.equals("newuser")) { 
     Authentication auth = new Authentication(); 
     boolean success = auth.CheckUserName(request.getParameter("username")); 

     if (success) { 
      service.Admin.saveUser((HashMap) ServletUtils.prepareRequestArguments(request)); 

      response.sendRedirect("admin/newuser"); 
     } else { 
      response.sendRedirect("admin/login"); 
     } 
    } 

} 

}

:

여기 내 AdminController입니다 1. 어떻게 내 응용 프로그램이 정적 이미지 콘텐츠를 표시하는 얻는 방법? 내 컨트롤러, 또는 제가 그것을 처리하도록되어 매핑을 처리에서 그것을 중지 말을 엉망으로>

<mvc:default-servlet-handler/> 
<mvc:resources mapping="/images/**" location="/images/"/> 

- 2. 왜 방법이있다.

당신은 당신의 질문에 JSP 또는 뷰를 포함하지 않은 내가 일

+1

먼저,하지 않아도 모두 당신'DispatcherServlet'와'ContextLoaderListener'이 같은 컨텍스트 파일을로드합니다. –

+0

Tomcat이 컨텍스트 리스너를 요구하고 있는데 DispatcherServlet을로드하는 방법이 보이지 않습니다. – adjiandov

+0

/WEB-INF/spring-brains-servlet.xml에 대한 ''을 확인하십시오. 또한,'DispatcherServlet'의 이름은'spring-brains'입니다. 기본적으로 Spring은' -servlet.xml'이라는 컨텍스트 파일을 찾아서 DispatcherServlet과 함께로드합니다. 이것에서, 그것은 'ContextLoaderListener'와 같은 파일입니다. –

답변

-2

이 고민 한 사전에 감사합니다. 웹 응용 프로그램의 루트에서 절대 경로를 생성하기 위해 JSTL 태그를 사용

<img src="<c:url value='/images/yourimage.jpg'/>"> 
관련 문제