【问题标题】:How do I add a servlet to spring framework java web application?如何将 servlet 添加到 Spring 框架 Java Web 应用程序?
【发布时间】:2015-10-19 12:08:36
【问题描述】:

我认为这很简单,但显然我遗漏了一些东西,而且我似乎无法弄清楚它是什么。

我正在尝试将 servlet 添加到使用 java 和 spring 编写的现有 Web 应用程序中。这是我所做的:

我在 web.xml 中添加了以下内容:

<servlet>
    <servlet-name>SettingServlet</servlet-name>
    <display-name>SettingServlet</display-name>
    <description>Provides a rest endpoint for getting and setting settings.</description>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/SettingServlet-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>SettingServlet</servlet-name>
  <url-pattern>/setting/*</url-pattern>
</servlet-mapping>

然后我创建了以下文件(.../WEB-INF/SettingServlet-servlet.xml):

<?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:p="http://www.springframework.org/schema/p"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"
>

<bean id="settingController"
  class="com.my.package.path.SettingController"
  p:settingService-ref="settingService"/>

</beans>

然后我创建了以下控制器(com.my.package.path.SettingController.java):

@Controller
@RequestMapping("/setting")
public class SettingController {
    private SettingService settingService;
    public void setSettingService(final SettingService settingService) {
        Validate.notNull(settingService, "SettingController::settingService cannot be null");
        this.settingService = settingService;
    }

    @ResponseBody
    @RequestMapping(value = "/{name}", method = RequestMethod.GET)
    @Secured({ "ROLE_ADMINISTRATOR", "ROLE_CURIOUS_GEORGE" })
    public ResponseEntity<String> getSettingRequest(@PathVariable("name") final String name, @RequestParam("setting_family") final String settingFamily) {
        final String jsonBody = "{\"setting\":\"" + name + "\", \"Setting Family\":\"" + settingFamily + "\", \"value\":\"test\"}";
        return new ResponseEntity<String>(jsonBody, HttpStatus.OK);
    }
}

我做错了什么? :( 尝试在 /setting/fruit?setting_family=foods 发出 GET 请求时出现 404 not found 异常

【问题讨论】:

  • 在不被视为注释的 xml 中 :) 那是将 /setting/... 为基础的任何内容 (*) 定向到我的 SettingController...
  • 当您向调度程序声明 url 模式为“/setting/*”,然后在控制器中将“/setting”声明为该控制器的根 requestMapping,您应该能够使用这个网址:/setting/setting/fruit?setting_family=foods
  • 是的!!!!谢谢巴布尔,就是这样。如果您将您的评论重新发布为我的问题的答案,我会将其标记为答案。谢谢!!!

标签: java spring spring-mvc servlets web-applications


【解决方案1】:

当您向调度程序声明 url 模式为“/setting/*”,然后在控制器中将“/setting”声明为该控制器的根 requestMapping,您应该能够使用此 url 访问您的控制器:/setting /setting/fruit?setting_family=foods :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多