相关文章
更多最近更新
更多spring控制器在集群下的问题
2019-03-25 13:33|来源: 网路
xml里面写的spring url-pattern都是/
问题
通过jsp连接的请求都正确定位到正确的url
jsp处理
<%@ page import="com.magus.web.util.PropUtil;"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
basePath = PropUtil.getPropertyByName("path");
%>
basePath等于配置文件里配置的绝对url,例如http://www.domain.org:8080/domain1
但是后台处理的post请求完毕后,return new ModelAndView(new RedirectView("add"));
url就会转向http://www.domain.org:28080/domain1/add,
服务架构师说不允许用request.getContextPath();要写死contextPath,
对于spring的DispatcherServlet,需要做如何变化才能使spring初始化的时候读取的webappcontext是绝对的url,
继承或者重写?
问题补充:
spring 控制器都是直接都用/来初始化了当前的上下文,我想的是集成spring初始化的某个类,将其/改为我的静态url,这样就固定住了/不是动态从服务器里获取的。
问题
通过jsp连接的请求都正确定位到正确的url
jsp处理
<%@ page import="com.magus.web.util.PropUtil;"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
basePath = PropUtil.getPropertyByName("path");
%>
basePath等于配置文件里配置的绝对url,例如http://www.domain.org:8080/domain1
但是后台处理的post请求完毕后,return new ModelAndView(new RedirectView("add"));
url就会转向http://www.domain.org:28080/domain1/add,
服务架构师说不允许用request.getContextPath();要写死contextPath,
对于spring的DispatcherServlet,需要做如何变化才能使spring初始化的时候读取的webappcontext是绝对的url,
继承或者重写?
问题补充:
naughty_liang 写道
Request对象可以取URI,PORT,CONTENTPATH,你再组装下不就可以了。
<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> <servlet> <servlet-name>base</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/webmvc-config.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>base</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
spring 控制器都是直接都用/来初始化了当前的上下文,我想的是集成spring初始化的某个类,将其/改为我的静态url,这样就固定住了/不是动态从服务器里获取的。
相关问答
更多-
是不是有一款什么手机软件,可以很自然的拉长腿部?不是美图秀秀,有知道的不?[2022-10-20]
spring -
春天的英语怎么读?[2022-05-21]
spring -
Spring控制器是单例(每个Web应用程序每个控制器只有一个实例)就像servlet一样。 通常,改变这种行为没有任何意义(如果它甚至是可能的话)。 请参阅关于servlet的线程安全的常见错误,也适用于控制器。 如果您的应用程序是集群的,尽可能多地避免状态。 控制器中的状态将需要同步以避免线程问题。 此外,您可能会跨服务器复制该状态 - 非常昂贵和麻烦。 Spring controllers are singletons (there is just one instance of each contr ...
-
简短的回答: @Controller如何在内部实现并不重要。 答案很长: 首先,您应该阅读参考手册以了解API,它主要基于注释。 你没有AbstractController , SimpleFormController等重要句子: @Controller注释指示特定类充当控制器的角色。 Spring不要求您扩展任何控制器基类或引用Servlet API。 你必须放弃“Spring MVC 2.5思考”,然后定义用@Controller注释的bean @Controller public class Clin ...
-
将方法上的requestMapping标记更改为... @RequestMapping(value = {"", "/", "/list"}, method = RequestMethod.GET) 从评论中编辑添加: 您是否尝试将控制器设置为@RequestMapping("/test*") Change the method requestMapping tag on the method to... @RequestMapping(value = {"", "/", "/list"}, method ...
-
我有点困惑。 但第一点 - 将所有控制器放在单独的目录中是好的,这是最好的做法,但更好的是使用/ rest目录。 第二点 - 您必须定义应用程序上下文并启用一些内容(例如通过注释)。 试着看看http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-structuring-your-code.html ,在这里你可以看到注释和基本结构。 为此,将此注释设置为Application.java: @Configuration ...
-
Spring控制器声明(Spring controller declaration)[2022-08-28]
在Spring Class中标记为@Controller,方法被标记为@RequestMapping,根据参数,url路径,accept头等处理特定请求。 Spring MVC非常灵活,允许您有多种返回类型,请参见弹簧参考,请参阅同一页面上的“支持的方法返回类型”部分。 还有spring-mvc-3-showcase博客 In Spring Class is marked as @Controller, methods are marked as @RequestMapping handling speci ... -
正如我在使用HTTP为RStudio设置Kuberentes集群以及错误页面中的Shiny结果负载平衡一样 ,最可能出现的问题是,当您使用此入口时,您附加的URI不同于直接accesc(/ service1 / vs /),所以你的应用程序丢失,并没有该uri的内容。 使用Nginx Ingress控制器,您可以使用ingress.kubernetes.io/rewrite-target:/ annotation来缓解这一点,并确保即使在入口路径中存在子文件夹时也可以访问/。 因此,您需要使用适当的重写注释 ...
-
如果您的基本网址类似于= http:// localhost / myapp /其中myapp是您的上下文,那么myapp / a.html,myapp / b.html myapp / c.html将映射到以下控制器中的前3个方法。 但其他任何东西都会达到匹配**的最后一种方法。 请注意,如果您将**映射方法放在控制器的顶部,那么所有请求都将达到此方法。 然后这个控制器服务你的要求: @Controller @RequestMapping("/") public class ImportControlle ...
-
您可以注入String参数: @Value("${dropbox.access-token") private String accessToken; You can inject your String parameter instead: @Value("${dropbox.access-token") private String accessToken;