<小时/> 我正在为学校做一个项目。目标是最终创建一个学习网站。我一直在本地创建我的网站并且到目前为止测试它很好,所以我专注于将它放在服务器上以测试它(部署.war文件)。一旦我这样做,整个网站似乎都无法运作
<小时/> 问题是,当我尝试点击任何通过servlet的链接时,我从tomcat收到错误,说明所请求的资源不可用(http状态404)。这有点奇怪,因为它在本地工作
<小时/> 我注意到的第一件事就是去服务器.war文件首先进入快照网址(在我的情况下:
http://145.92.6.85:8080/PDL-1.0-SNAPSHOT/
),而不是立即登陆index.jsp页面(在本地发生)所以我的第一个想法是,它使用一种完全不同的方式来访问我正在寻找的文件。再次奇怪,因为本地一切正常(使用tomcat)。我查看了我的项目并尝试使用地图结构访问我正在寻找的文件,这似乎有效。因此,不是使用我在web.xml上指定的servlet,而是忽略它
classes
目录中。我决定不这样做,因为目前我已经将它们全部设置在不同的包中(源包 - &gt;控制器/模型等)。这似乎对我来说更合乎逻辑,除了它在本地工作之外,为什么这在服务器上不起作用?
据我所知,我的web.xml设置正确,但我会显示一些代码来说明问题所在。
<小时/> 这是我要关注的网址(在导航栏中)(如下:
http://145.92.6.85:8080/PDL/inlog
)
<li>
<a href="/PDL/inlog">Log In</a>
</li>
这是web.xml
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>controllers.login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
inlog.java文件(在Source Packages-&gt; controllers或PDL / src / main / java / controllers中)
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher rd = request.getRequestDispatcher("/pages/inlog.jsp");
rd.forward(request, response);
}
这是它因为无法找到而中断的地方。
<小时/> 在写这个问题的同时,我觉得我的URL和东西可能有点过于变化,也许应该比当前的静态更动态(因为服务器环境不同我猜)。任何人都可以给我一些提示,如何使网址更具动态性,这样他们就可以在本地和服务器上直接工作(类似PHP的等同于
$_SERVER['SERVER_NAME']
之类的东西?任何帮助都将不胜感激!我觉得重定向到的网址是我不知道如何解决的问题。
答案 0 :(得分:0)
好的,所以你搞乱了网络应用程序的结构。
我不知道你如何将它部署到本地服务器,但是如果你把它打包成战争,你应该遵循简单的规则。 example of a valid structure
答案 1 :(得分:0)
war文件的名称是什么?它是PDL-1.0-SNAPSHOT.war吗?你试过访问吗? “www.ip或域名/ PDL-1.0-SNAPSHOT /”?
如果您的war文件具有版本名称,则必须编辑Tomcat配置文件以将war文件名映射到上下文根。
如果您使用的是Tomcat 6,请参阅http://tomcat.apache.org/tomcat-6.0-doc/config/context.html以获取更多信息。