起因:很早之前写了一个仿Spring的精简web后端,一直是在window上运行的,后来把它放在linux上就出现了一些问题。
问题一:将war包放在tomcat/webapps下后一开始输入连接。如xxx:8080/test/Login/login是可以的,但是一旦跳转就出现找不到界面了。
解决:
在jsp界面中添加一句:
<%@ page isELIgnored="false"%>
这个是表示jsp将字符串中的特殊字符串,isELIgnored="true"表示不解析。
并且在form里的action里这么填写:
<form action="${pageContext.request.contextPath}/Context/sigleContext" method="post" enctype="application/x-www-form-urlencoded" style="float:right;padding:10px">
${pageContext.request.contextPath}
就是获取contex的路径也就是你具体应用的路径,这个其实就是webapps下的你应用的文件夹名。如果换一种什么名方式即在server.xml中声明会更好理解这个,如:
<Context path="/test" docBase="/home/xxxx/xxx/test/test/" reloadable="true" crossContext="true"/>
这个test就是contestPath。
通过这样就可以实现跳转了。
从菏泽一方面也加深了理解即tomcat的四个容器engine、host、context、wrap,这里感触最深的就是context了,因为他直接就是关注了应用。
问题二:判断当前系统是什么类别,这个很重要,因为不同的系统的路径不一样
答:
我的在window下路径使用的是\,但是在linux下就变成了/。
/**
* 判断当前的系统是window还是linux
* @return 如果是window则返回true,否则返回false
*/
private boolean windowOrLinux(){
String osName = System.getProperties().getProperty("os.name");
if (osName.equals("Linux")) {
return false;
} else {
return true;
}
}
通过此方法来判断是使用\还是/。