【发布时间】:2020-01-05 00:30:26
【问题描述】:
我今天在 Amazon EC2 上成功部署了我的 tomcat 战争。 在我的本地机器上,以下链接:localhost:8080/login 工作正常
但在我的 EC2 实例上,链接始终必须在链接中包含 .war 名称:
http://some-amazon-link:8080/the-war-name/login
现在我正在努力在我的 Spring MVC 项目中添加“/the-war-name/”的方式和位置。
它是否在
- web.xml
- 意见
- 控制器。
使用下面的代码,我可以通过以下链接访问登录: 本地主机:8080/登录 但我希望它是 localhost:8080/some-war-name/login
我尝试将 /some-war-name/ 添加到 @RequestMapping,更改调度程序
我的 login.jsp:
<html>
<head>
<title>Login ProV</title>
<link href="webjars/bootstrap/3.3.6/css/bootstrap.min.css"
rel="stylesheet">
</head>
<body>
<p><font color="red">${errorMessage}</font></p>
<form action="/login" method="POST">
<div class="form-group">
<label for="exampleInputEmail1">Benutzername</label>
<input name="name" type="text" class="form-control" id="exampleInputUsername1" placeholder="Benutzernamen eingeben">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input name="password" type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
</div>
<input class="btn btn-primary" type="submit" />
</form>
<script src="webjars/jquery/1.9.1/jquery.min.js"></script>
<script src="webjars/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</body>
</html>
我的 web.xml
<web-app 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"
version="3.0">
<display-name>To do List</display-name>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/todo-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
我的登录控制器
package com.mschm.login;
import org.springframework.beans.factory.annotation.Autowired;
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 org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import com.mschm.login.LoginService;
@Controller
@SessionAttributes("name")
public class LoginController {
@Autowired
LoginService service;
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String showLoginPage() {
return "login";
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String handleLoginRequest(@RequestParam String name, @RequestParam String password, ModelMap model) {
if(!service.validateUser(name, password)) {
model.put("errorMessage", "Invalid Credentials");
return "login";
} else {
model.put("name", name);
model.put("password", password);
return "welcome";
}
}
}
【问题讨论】:
-
欢迎您!你想要什么令人困惑,但我认为你想在你的本地主机上添加战争名称。如果是这样,请将其添加到您的 web.xml 中的这一行
<url-pattern>/</url-pattern> -
嗨,好的,我尝试再次使用我的 localhost 链接来解释它,现在使用上面显示的代码我可以使用“/login”访问我的 login.jsp:localhost:8080/login 我该怎么做必须更改,才能使用以下 url 访问链接:localhost:8080/foobar/login
-
如果您将
<url-pattern>/</url-pattern>更改为<url-pattern>/foobar</url-pattern>,您应该会得到。 -
很遗憾,当我这样做时,我收到 404 错误。:HTTP 状态 404 - /foobar/login type 状态报告消息 /foobar/login description 请求的资源不可用。我是否还必须将目录更改为 WEB-INF/views/foobar?