最近用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头部信息如下
这个版本的isELIgnored默认设置为false。所以使用web.xml里用web-app_2_4.xsd声明的时候在JSP页面不用特意 声明。
(3).
此种代码在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不再报错