最近用servlet写了一个小工程,出现几个问题,这些问题以前也遇到过,现在总结一下解决方法:
一.工程环境:jdk1.6 纯servlet tomcat 5.5
1. 工程启动前添加两个jar包:Tomcat 5.5.27\common\lib下的servlet-api.jar,jsp-api.jar
启动无错,打开首页报错: 找不到处理jsp的类(还原不了这个错误了,有时候又没错 纠结...)
网上说法 是添加的jar包跟tomcat默认jar包冲突,去掉jsp-api.jar即可。
2.jsp中的el表达式无法解析,解决方法有一下几种:
(1).在要用的el表达式的页面加上: <%@ page isELIgnored="false" %>
(2).修改web.xml头部信息如下
写道
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
这个版本的isELIgnored默认设置为false。所以使用web.xml里用web-app_2_4.xsd声明的时候在JSP页面不用特意 声明。
(3).
写道
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>
此种代码在2.5下无用
3.点击登录报错
javax.servlet.ServletException: Wrapper cannot find servlet class com.yicha.servlet.LoginServlet or a class it depends on
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
java.lang.Thread.run(Thread.java:619)
如果不用eclipse单独启动tomcat则会报如下错:
HTTP Status 404 - Servlet LoginServlet is not available
type Status report
message Servlet LoginServlet is not available
description The requested resource (Servlet LoginServlet is not available) is not available.
此原因是用eclipse创建工程的时候将编译后的文件放在了目录build\classes下,修改为传统的WebRoot\WEB-INF\classes不再报错