一、tomcat7换成tomcat8.5后,启动项目后,访问主页面遇到了一个问题:org.apache.jasper.JasperException: /login/login.jsp (行.: [1], 列: [1]) 文.件[] 未找到
这个问题我也找过网上的其他博客,都没有解决了这个问题,然后查找web项目中跟tomcat有关的内容,最后找到了WEB-INF下面的web.xml文件,看这个文件很头大,不知道哪里错了,一开始觉得只是头部不一致,把头部改了就行;
(1)步骤1
1.7的web.xml配置文件的头部:
1.8的web.xml配置文件的头部:
代码块:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
但是还是没有解决了这个问题,还是报同样的错误,页面无法正常访问。
(2)步骤二:
使用tomcat8空的web.xml,把之前1.7配置好的web.xml中的内容一点点的挪过来,然后一个一个的对比,查看1.8和1.7中配置参数存在的差异。
最终我发现,1.7中使用的几个配置参数在1.8中没找到,修改了这个后,再重新运行tomcat就可以正常访问了
二、tomcat运行的时候,会造成js乱码
修改tomcat底下的catalina.bat文件,在这个文件中添加:
set JAVA_OPTS=-Xms512m -Xms1024m -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8
底下的内容是tomcat8的全配置信息
可以根据下面的配置信息来查找错误信息
<?xml version="1.0" encoding="UTF-8"?>
<!-- 整个配置文件的根标签 -->
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 指定web站台中小图标和大图标的路径 -->
<icon>
<small-icon></small-icon>
<large-icon></large-icon>
</icon>
<!-- 标注了该web项目的名字 -->
<display-name>Test</display-name>
<!-- 对应用做出描述 -->
<description>Servlet web.xml v1.0</description>
<!-- 这里配置的是整个项目的初始化参数; 设定web应用的环境参数(context) -->
<context-param>
<!-- 设定Context名称 -->
<param-name>companyName</param-name>
<!-- 设定Context名称的值 -->
<param-value>FM</param-value>
</context-param>
<context-param>
<param-name>authorName</param-name>
<param-value>jeff</param-value>
</context-param>
<!-- 用来设定web应用的过滤器 -->
<filter>
<!-- 定义Filter的名称 -->
<filter-name>Encoding</filter-name>
<!-- 定义Filter的类名称 -->
<filter-class>xyz.xmcs.Servlet.MyServletFilter</filter-class>
<!-- 初始化参数 -->
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<!-- 用来和一个或对各Servlet或者JSP页面关联 -->
<filter-mapping>
<!-- 定义Filter的名称 -->
<filter-name>Encoding</filter-name>
<!-- Filter所对应的RUL -->
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Listener元素用来定义Listener接口 -->
<listener>
<!-- 定义Listener的类名称 -->
<listener-class>xyz.xmcs.Servlet.MyServletListener</listener-class>
</listener>
<!-- 定义了首页文件,也就是用户直接输入域名时跳转的页面(如http://localhost:8080/) -->
<welcome-file-list>
<welcome-file>form</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 用来声明一个 Servlet 的数据 -->
<servlet>
<!-- 指定 Servlet 的名称 -->
<servlet-name>MyServlet</servlet-name>
<!-- 指定 Servlet 的全限定内名称 -->
<servlet-class>xyz.xmcs.Servlet.MyServlet</servlet-class>
<!-- 指定web网站中某个JSP网页的完整路径 -->
<!--<jsp-file>/index.jsp</jsp-file>-->
<!-- 定义这个Servlet初始化参数,在servlet类中通过ServletConfig对象传入init函数,通过- getInitParamenter(String name)方法访问初始化参数 -->
<init-param>
<param-name>DRIVER</param-name>
<param-value>com.mysql.cj.jdbc.Driver</param-value>
</init-param>
<init-param>
<param-name>URL</param-name>
<param-value>jdbc:mysql://localhost:3306/myDatabase</param-value>
</init-param>
<init-param>
<param-name>USERNAME</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>PASSWORD</param-name>
<param-value>root</param-value>
</init-param>
<!-- 指定当Web应用启动时,装载Servlet的次序 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 定义servlet所对应的URL -->
<servlet-mapping>
<!-- 指定servlet的名称 -->
<servlet-name>MyServlet</servlet-name>
<!-- 指定servlet所对应的URL -->
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
<!-- 定义这个web站台所有session的有效期限.单位为分钟 -->
<session-config>
<!-- 有效期限, 单位为秒 -->
<session-timeout>30</session-timeout>
</session-config>
<!-- 定义某一个扩展名和某一MIME Type做对映. -->
<mime-mapping>
<!-- 扩展名称 -->
<extension>doc</extension>
<!-- MIME格式. -->
<mime-type>application/vnd.ms-word</mime-type>
</mime-mapping>
<!-- 返回特定状态码时或者特定类型的异常被抛出时, 能够指定将要显示的页面 -->
<error-page>
<!-- 错误代码 -->
<error-code>404</error-code>
<!-- 对应的页面 -->
<location>/404page.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/404page.html</location>
</error-page>
<error-page>
<!-- 错误代码 -->
<exception-type>java.lang.Exception</exception-type>
<!-- 对应的页面 -->
<location>/exception.jsp</location>
</error-page>
<!-- 主要用来设定JSP的相关配置 -->
<jsp-config>
<!-- 用来设定JSP网页用到的Tag Library路径 -->
<!--<taglib>-->
<!-- 定义TLD文件的URI,JSP网页的taglib指令可以经由这个URI存取到TLD文件 -->
<!--<taglib-uri>Taglib</taglib-uri>-->
<!-- LD文件对应Web站台的存放位置 -->
<!--<taglib-location>/WEB-INF/</taglib-location>-->
<!--</taglib>-->
<jsp-property-group>
<!-- 此设定的说明 -->
<description>
Special property group for JSP Configuration JSP example.
</description>
<!-- 此设定的名称 -->
<display-name>JSPConfiguration</display-name>
<!-- 设定值所影响的范围,如:/CH2 或者/*.jsp -->
<url-pattern>/*</url-pattern>
<!-- 若为true,表示不支持EL语法. -->
<el-ignored>true</el-ignored>
<!-- 设定JSP网页的编码 -->
<page-encoding>GB2312</page-encoding>
<!-- 若为true表示不支持<%scription%>语法. -->
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>
<!-- 声明一个与资源相关的一个管理对象 -->
<resource-env-ref>
<!-- 资源的名称 -->
<resource-env-ref-name>jdbc/mssql</resource-env-ref-name>
<!-- 查找资源时返回的资源类名 -->
<resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
</resource-env-ref>
<!-- 声明一个资源工厂使用的外部资源 -->
<resource-ref>
<!-- 资源说明 -->
<description>JNDI JDBC DataSource</description>
<!-- 资源名称 -->
<res-ref-name>jdbc/data</res-ref-name>
<!-- 资源种类 -->
<res-type>javax.sql.DataSource</res-type>
<!-- 资源由Application或Container来许可 -->
<res-auth>Container</res-auth>
</resource-ref>
</web-app>