首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring - URI映射问题

Spring - URI映射问题
EN

Stack Overflow用户
提问于 2015-05-25 16:11:51
回答 2查看 341关注 0票数 0

我在我的应用程序上遇到了一个映射错误,任何帮助都将不胜感激!=)

错误消息:在名为'springapp‘的DispatcherServlet中找不到URI /springapp/priceincrease.htm的HTTP请求映射

你可以在下面找到一些代码:

PriceIncreaseFormController.java

代码语言:javascript
运行
复制
@Controller
@RequestMapping(value="/priceincrease.htm")
public class PriceIncreaseFormController {

/** Logger for this class and subclasses */
protected final Log logger = LogFactory.getLog(getClass());

@Autowired
private ProductManager productManager;

@RequestMapping(method = RequestMethod.POST)
public String onSubmit(@Valid PriceIncrease priceIncrease, BindingResult result)
{
    if (result.hasErrors()) {
        return "priceincrease";
    }

    int increase = priceIncrease.getPercentage();
    logger.info("Increasing prices by " + increase + "%.");

    productManager.increasePrice(increase);

    return "redirect:/hello.htm";
}

@RequestMapping(method = RequestMethod.GET)
protected PriceIncrease formBackingObject(HttpServletRequest request) throws ServletException {
    PriceIncrease priceIncrease = new PriceIncrease();
    priceIncrease.setPercentage(15);
    return priceIncrease;
}

public void setProductManager(ProductManager productManager) {
    this.productManager = productManager;
}

public ProductManager getProductManager() {
    return productManager;
}

}

app-config.xml

代码语言:javascript
运行
复制
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       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/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">


   <bean id="productManager" class="com.companyname.springapp.service.SimpleProductManager">
     <property name="products">
        <list>
            <ref bean="product1"/>
            <ref bean="product2"/>
            <ref bean="product3"/>
        </list>
     </property>
   </bean>


   <bean id="product1" class="com.companyname.springapp.domain.Product">
     <property name="description" value="Lamp"/>
     <property name="price" value="5.75"/>
   </bean>

   <bean id="product2" class="com.companyname.springapp.domain.Product">
     <property name="description" value="Table"/>
     <property name="price" value="75.25"/>
   </bean>

   <bean id="product3" class="com.companyname.springapp.domain.Product">
     <property name="description" value="Chair"/>
     <property name="price" value="22.79"/>
   </bean>


   <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
     <property name="basename" value="messages"/>
   </bean>

   <!-- Scans the classpath of this application for @Components to deploy as beans -->
   <context:component-scan base-package="com.companyname.springapp.web" />

   <!-- Configures the @Controller programming model -->
   <mvc:annotation-driven/>

   <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
     <property name="prefix" value="/WEB-INF/views/"></property>
     <property name="suffix" value=".jsp"></property>        
   </bean>

</beans>

web.xml

代码语言:javascript
运行
复制
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <display-name>Springapp</display-name>

  <servlet>
    <servlet-name>springapp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/spring/app-config.xml</param-value>
    </init-param>
   <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>springapp</servlet-name>
    <url-pattern>*.htm</url-pattern>
  </servlet-mapping>

</web-app>
EN

回答 2

Stack Overflow用户

发布于 2015-05-25 16:25:53

您忘记在应用程序上下文中添加处理程序映射:

代码语言:javascript
运行
复制
<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
票数 0
EN

Stack Overflow用户

发布于 2015-05-25 19:33:26

GET方法中有问题: formBackingObject。根据您的需求,它应该返回到视图或使其成为REST方法。

案例1:返回视图(JSP、HTML、XSLT...)

代码语言:javascript
运行
复制
@RequestMapping(value="/priceincrease.htm",method = RequestMethod.GET)
protected String formBackingObject(HttpServletRequest request,Model model) throws ServletException {
      PriceIncrease priceIncrease = new PriceIncrease();
      priceIncrease.setPercentage(15);
      model.addAttribute("priceIncrease",priceIncrease);
      return "view_name";
}

案例2:使用@ResponseBody的REST方法(jackson.core Jar是必需的)

代码语言:javascript
运行
复制
@RequestMapping(value="/priceincrease.htm",method = RequestMethod.GET)
@ResponseBody
protected PriceIncrease formBackingObject(HttpServletRequest request) throws ServletException {
    PriceIncrease priceIncrease = new PriceIncrease();
    priceIncrease.setPercentage(15);
    return priceIncrease;
}

在这里,您已经为这两种情况修改了控制器的父映射(只需删除它

代码语言:javascript
运行
复制
@Controller
public class PriceIncreaseFormController {

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30433825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档