==================web.xml=================
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>loginBasic</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<welcome-file-list>
<welcome-file>siteMendorLogin.jsp</welcome-file>
</welcome-file-list>
<!-- <servlet>
<servlet-name>siteMendorLogin</servlet-name>
<servlet-class>com.firstApp.servlet.SiteMendorLogin</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>siteMendorLogin</servlet-name>
<url-pattern>/site</url-pattern>
</servlet-mapping> -->
<session-config>
<session-timeout>15</session-timeout>
</session-config>
</web-app>
i have my spring.xml placed in src/main/resources folder, hope that location specifies in web.xml is correct
src/main/java --> package com.firstApp.servlet MyServletLogin.java
package com.firstApp.servlet;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.firstApp.spring.tx.model.User;
import com.firstApp.spring.tx.user.UserManager;
@WebServlet("/Site")
public class MyServletLogin extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
private UserManager userManager;
Map<String, String> userDetails= new HashMap<String, String>();
@Override
public void init(ServletConfig config) throws ServletException {
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
UserManager userManager = (UserManager) ctx.getBean("userManagerImpl");
userDetails.put("mayank", "mayank");
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
//TODO
//check if cookies with user Credentials are already present
//
//
userManager = (UserManager) ctx.getBean("userManagerImpl");
List<User> list = userManager.findAllUsers();
String uid=req.getParameter("userId");
String uName=req.getParameter("userName");
String userPass=req.getParameter("userPass");
HttpSession session = req.getSession();
if(userDetails.containsKey(uid) && userDetails.get(uid).equals(userPass)){
session.setAttribute("userId", uid);
session.setAttribute("userName", uName);
Cookie cookie = new Cookie("credential", uid+":"+uName+":"+userPass);
cookie.setMaxAge(100000);
cookie.setPath("/callidus/");
resp.addCookie(cookie);
resp.sendRedirect("http://localhost:8081/callidus/CookieSent");
}else{
session.setAttribute("invalid", "Invalid User Id or password");
resp.sendRedirect("siteMendorLogin.jsp");
}
}
}
siteMendorLogin.jsp looks like this
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>SiteMendor Login</title>
</head>
<body>
<form action="Site" method="post">
<pre>UserId : <input type="text" name="userId"/><br/> </pre>
<pre>UserName : <input type="text" name="userName"/><br/> </pre>
<pre>Password : <input type="password" name="userPass"/><br/> </pre>
<input type="submit" value="login"/>
</form>
</body>
</html>
I am not sure, if i am doing it the right way, on tomcat start up, getting below error :
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4854) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
Mar 24, 2017 12:37:52 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Skipped installing application listeners due to previous error(s) Mar 24, 2017 12:37:52 PM org.apache.catalina.core.StandardContext startInternal SEVERE: Error listenerStart Mar 24, 2017 12:37:52 PM org.apache.catalina.core.StandardContext startInternal SEVERE: Context [/com.myFirstApp] startup failed due to previous errors
Not even getting welcome file(siteMendorLogin.jsp) that i mentioned in web.xml
=======spring.xml=============
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<tx:annotation-driven />
<context:component-scan base-package="com.firstApp.spring.tx.dao.impl" />
<context:component-scan base-package="com.firstApp.spring.tx.user.impl" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/poc_data" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="testPU" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
</beans>
=====pom.xml======
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.firstApp.spring.tx</groupId>
<artifactId>com.myFirstApp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>com.myFirstApp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>3.2.5.RELEASE</spring.version>
<hibernate.version>4.1.9.Final</hibernate.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.15</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
<version>2.7.7</version>
</dependency>
</dependencies>
</project>
after adding Maven Dependencies to deployment assembly was able to resolve ContextLoaderListener Error but still issue exist in accessing the service bean in servlet, getting this error :
javax.servlet.ServletException: Servlet.init() for servlet com.firstApp.servlet.MyServletLogin threw exception
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
root cause
java.lang.NullPointerException
javax.servlet.GenericServlet.getServletContext(GenericServlet.java:125)
com.firstApp.servlet.MyServletLogin.init(MyServletLogin.java:38)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
Spring
, why are you writing Servlets? Use Spring Web MVC. – Andreasjava.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
it seems that you are not deploying Spring correctly in your server – RubioRic