Reputation: 85
I am try to deploy a web app using apache tomcat and facing issue with exception.I am completely new to java so help me clearly. Message org.apache.jasper.JasperException: Unable to compile class for JSP.
Description The server encountered an unexpected condition that prevented it from fulfilling the request. Looking into my login page java code is below
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import ="java.sql.*" %>
<%@ page import ="javax.sql.*" %>
<%@ page import ="javax.swing.JOptionPane;" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login</title>
</head>
<body>
<%
//connection to database
Connection conn = null;
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","***");
Statement st= conn.createStatement();
String username=request.getParameter("username");
String password=request.getParameter("userpass");
//Check if username or password is empty
if(username!="" && password!="")
{
session.setAttribute("username",username);
//session.setAttribute("refreshCount","0");
ResultSet rs=st.executeQuery("select * from login where userId='"+username+"'");
if(rs.next())
{
//Check if user password matches with database password
if(rs.getString(2).equals(password))
{
//retrieving the role of user form the database 1-Manager and 0 - student
int role=rs.getInt(4);
if(role==1)
{
response.sendRedirect("managerHome.jsp");
}
else
{
response.sendRedirect("studentHome.jsp");
}
}
else
{
JOptionPane.showMessageDialog(null, "Invalid username or password.");
String redirectURL= "index.jsp";
response.sendRedirect(redirectURL);
}
}
else
{
JOptionPane.showMessageDialog(null, "Invalid username or password.");
String redirectURL= "index.jsp";
response.sendRedirect(redirectURL);
}
}
else
{
JOptionPane.showMessageDialog(null, "Username or password should not be empty");
String redirectURL= "index.jsp";
response.sendRedirect(redirectURL);
}
%>
</body>
</html>
Exception:
org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to compile class for JSP
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:604)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:422)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause:
org.apache.jasper.JasperException: Unable to compile class for JSP
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:619)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
java.lang.IllegalArgumentException: Page directive: invalid value for import
org.apache.jasper.compiler.Node$PageDirective.validateImport(Node.java:619)
org.apache.jasper.compiler.Node$PageDirective.addImport(Node.java:599)
org.apache.jasper.compiler.Parser.parsePageDirective(Parser.java:366)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:478)
org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1797)
org.apache.jasper.compiler.Parser.parse(Parser.java:141)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:127)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:202)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:385)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:362)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:346)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Coming to my xml file it is below Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" metadata-complete="true" version="3.0">
<display-name>SEProject</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>ManagerTimesheetsServlet</display-name>
<servlet-name>ManagerTimesheetsServlet</servlet-name>
<servlet-class>timesheet.ManagerTimesheetsServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ManagerTimesheetsServlet</servlet-name>
<url-pattern>/ManagerTimesheetsServlet</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>StudentTimesheetServlet</display-name>
<servlet-name>StudentTimesheetServlet</servlet-name>
<servlet-class>timesheet.StudentTimesheetServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>StudentTimesheetServlet</servlet-name>
<url-pattern>/StudentTimesheetServlet</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>StudentUpdateServlet</display-name>
<servlet-name>StudentUpdateServlet</servlet-name>
<servlet-class>timesheet.StudentUpdateServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>StudentUpdateServlet</servlet-name>
<url-pattern>/StudentUpdateServlet</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>CreateTimesheetServlet</display-name>
<servlet-name>CreateTimesheetServlet</servlet-name>
<servlet-class>timesheet.CreateTimesheetsServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CreateTimesheetServlet</servlet-name>
<url-pattern>/CreateTimesheetsServlet</url-pattern>
</servlet-mapping>
<servlet>
<display-name>ApplyLeaveHandler</display-name>
<servlet-name>ApplyLeaveHandler</servlet-name>
<servlet-class>timesheet.ApplyLeaveHandler</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ApplyLeaveHandler</servlet-name>
<url-pattern>/ApplyLeaveHandler</url-pattern>
</servlet-mapping>
<servlet>
<display-name>EditLeaveHandler</display-name>
<servlet-name>EditLeaveHandler</servlet-name>
<servlet-class>timesheet.EditLeaveHandler</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>EditLeaveHandler</servlet-name>
<url-pattern>/EditLeaveHandler</url-pattern>
</servlet-mapping>
<servlet>
<display-name>SubmitUpdatedLeaveHandler</display-name>
<servlet-name>SubmitUpdatedLeaveHandler</servlet-name>
<servlet-class>timesheet.SubmitUpdatedLeaveHandler</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SubmitUpdatedLeaveHandler</servlet-name>
<url-pattern>/SubmitUpdatedLeaveHandler</url-pattern>
</servlet-mapping>
<servlet>
<display-name>UpdateLeaveHandler</display-name>
<servlet-name>UpdateLeaveHandler</servlet-name>
<servlet-class>timesheet.UpdateLeaveHandler</servlet-class>
</servlet>
<servlet>
<display-name>ViewLeaveHandler</display-name>
<servlet-name>ViewLeaveHandler</servlet-name>
<servlet-class>timesheet.ViewLeaveHandler</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UpdateLeaveHandler</servlet-name>
<url-pattern>/UpdateLeaveHandler</url-pattern>
</servlet-mapping>
</web-app>
Upvotes: 1
Views: 2986
Reputation: 48
I know this is not the answer to your question but believe me this will save you from a lot of trouble (tested it myself).
Try not using raw java code in your JSP pages, instead you can do your job on the server (.java files) and return variables and arrays on the JSP pages and build your page with that variables using JSTL.
How to avoid Java code in JSP files?
Upvotes: 0
Reputation: 28522
The error java.lang.IllegalArgumentException: Page directive: invalid value for import
itself says you have import
class which doesn't exist . i.e <%@ page import ="javax.swing.JOptionPane;" %>
<-here you have ;
at end of your import remove
that it should work .
Upvotes: 4