【问题标题】:Spring Request MappingSpring 请求映射
【发布时间】:2011-07-22 03:55:41
【问题描述】:

这就是我想要在这里实现的目标。
我有一个登录页面,位于 WebContent/login.jsp。这是应用程序的初始入口点。现在我需要在这个登录页面上显示一个属性名称(我从后端注入 myProperies 获得的。
我曾想过通过控制器路由此入口点以获取页面名称,但我面临一个问题,即 pageName 属性在 JSP 上总是返回空。系统也出 永远不会被调用。我认为我的控制器永远不会被调用?我使用的网址是:http://localhost:8080/abc/login.html

package com.abc.xyz;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.abc.xyx.prop.MyProperties;

@Controller
public class PreLoginController {

    @Resource
    private MyProperties myProperties;

    @RequestMapping(value = "/abc/login.html",  method = RequestMethod.GET)
    public String getMyLoginPage(ModelMap model){

        String pageName = myProperties.getMyPageName();
        model.addAttribute("page", pageName);

        System.out.println("my page name is: " + pageName);

        return "login";
    }

}

【问题讨论】:

  • 该代码将无法编译。 System 大写 S,sysout 行缺少 ;(分号)。
  • 你的 Spring 上下文是什么样的?
  • 那只是一个错字。对不起。我用 Syso 替换了 log.info。代码编译正常。
  • @matt,Spring 上下文?能否请您详细说明...
  • 连接所有 bean 并配置 Spring 的 XML 文件。

标签: java spring jsp spring-mvc


【解决方案1】:

假设您的调度程序 servlet 正在寻找“html”并且您的上下文根是“abc”,您的 @RequestMapping 值应该只是“/login”而不是“/abc/login.html”

【讨论】:

  • 嗨 GriffeyDog,准备试试你的解决方案。我在日志中注意到 syso 语句确实打印了结果。不确定那是什么时候发生的,因为我正在尝试各种组合。找到应用程序上下文根的最简单方法是什么
  • 好吧,如果您使用localhost:8080/abc/login.jsp 很好地访问了JSP,那么您的上下文根确实是/abc。通常,它位于特定于服务器的文件中(即在 Weblogic 上它位于 weblogic.xml 中)
  • 是我的安全配置强制回调到非安全页面。
【解决方案2】:

您是否考虑过使用 Spring Security 代替此类事务?这将大大减少您的工作量,并让您专注于实际的 webapp 需求

http://static.springsource.org/spring-security/site/tutorial.html

【讨论】:

  • 您好 Marcelog,感谢您的回复。我在我的应用程序中使用 Spring Security。只是我想测试一个预登录控制器。不知道为什么它没有击中。
  • 您可以发布您的 web.xml 和您的应用程序上下文 xml 文件吗?另外,您应该使用记录器而不是 system.out.println,尝试以这种方式记录以确保您的控制器未被调用
  • 嗨,marcelog,在调用 URL 时,我得到了这个:处理 /abc/login.html 的 WebGroup/Virtual Host 尚未定义。我在哪里错过了钩子?
  • 您是否在应用服务器中正确设置和部署了您的 webapp?您需要部署您的 webapp 并启动​​您的应用服务器,配置上下文(如 / 或 /myApp),以便服务器可以知道应该将请求重定向到哪个应用
猜你喜欢
  • 2023-03-09
  • 2018-11-12
  • 2019-11-25
  • 2012-07-02
  • 2013-04-24
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多