Wednesday 28 March 2012

Spring(sample)project

LoginController.java

package com.jagan.spring;
import org.springframework.web.servlet.*;
import org.springframework.web.servlet.mvc.*;
import javax.servlet.http.*;
/**
 *
 * @author jagan mohan paspula
 *
 */
public class LoginController implements Controller
{

 LoginModel loginModel;

 public LoginController(LoginModel lm)
 {
  loginModel=lm;
 }

    /**@author jagan mohan paspula
     *
     */
 public ModelAndView handleRequest(HttpServletRequest req,
   HttpServletResponse res) throws Exception
   {
  // TODO Auto-generated method stub
  String uname =req.getParameter("uname");
  String pass = req.getParameter("pass");
  String type = loginModel.validate(uname,pass);
  if(type==null)
   throw new MyExpection("user deatils are not valid");
   //return new ModelAndView("/employeelogin.jsp");
  else if(type.equals("admin"))
   return new ModelAndView("/AdminHome.jsp");
  else
   return new ModelAndView("/userHome.jsp");

}
}

LoginModel .java

package com.jagan.spring;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
public class LoginModel {

 private JdbcTemplate jdbcTemplate;
 public LoginModel(JdbcTemplate jt)
 {
  jdbcTemplate = jt;
 }

  /**
   * @author jagan mohan paspula
   * @param uname
   * @param pass
   * @return
   */
 public String validate(String uname, String pass) {
  // TODO Auto-generated method stub
  try
  {
  return(String)jdbcTemplate.queryForObject("select type from userdeatils where username=\'"+uname+"\' and userpass=\'"+pass+"\'",String.class);
  }
  catch(EmptyResultDataAccessException e)
  {
   return null;
  }
   }
}

MyExpection .java

package com.jagan.spring;
public class MyExpection extends RuntimeException {

 public MyExpection(String name)
 {
  super(name);
 
 }
}

ds-servlet.xml

<p>
<?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:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- Configuring DataSource -->
 <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource">
   <property name="driverClassName">
   <value>oracle.jdbc.driver.OracleDriver</value>
   </property>
   <property name="url">
   <value>jdbc:oracle:thin:@localhost:1521:orcl</value>
   </property>
   <property name="username">
   <value>scott</value>
   </property>
   <property name="password">
   <value>tiger</value>
   </property>
   </bean>
 
  <bean id="jdbctemp" class="org.springframework.jdbc.core.JdbcTemplate">
   <constructor-arg>
   <ref local="datasource"/>
  </constructor-arg>
   </bean>
<bean id="loginModel" class="com.jagan.spring.LoginModel">
   <constructor-arg>
   <ref local="jdbctemp"/>
  </constructor-arg>
   </bean>
 
 <bean id="logincnt" class="com.jagan.spring.LoginController">
   <constructor-arg>
   <ref local="loginModel"/>
  </constructor-arg>
   </bean>

   <bean id="myurlmapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     <property name="mappings">
     <props>
     <prop key = "/login.spring">logincnt</prop>
     </props>
   </property>
  </bean>

</beans>
</p>
EmployeeLogin.jsp

<html>
<body>
<form action="login.spring"><pre>
<br>user name:<input type="text" name="uname"/>
<br>
password:<input type="password" name="pass"/>
<br>
<input type="submit" value="LogIN">
</pre>
</form>
</body>
</html>
UserHome.jsp
<html>
<body>
<b>welcome</b>
user Name:<%=request.getParameter("uname")%>
</body>
</html>
Admin.jsp
<html>
<body>
<br>
Welcome to the AdminHome page
<%=request.getParameter("uname") %>
<br>
</body>
</html>
...................................................................................................................................................................
...................................................................................................................................................................
package com.spring.jagan.abstractvadiator;
import java.io.PrintWriter;
LoginController(validation):when extends with  AbstractCommandController it provides the below method
protected ModelAndView handle(HttpServletRequest req,
   HttpServletResponse res, Object command, BindException errors)
   throws Exception
LoginController.java
import org.springframework.validation.BindException;
import org.springframework.validation.FieldError;
import org.springframework.web.servlet.*;
import org.springframework.web.servlet.mvc.*;
import javax.servlet.http.*;
public class LoginController extends AbstractCommandController
{

 LoginModel loginModel;

 public LoginController(LoginModel lm)
 {
  loginModel=lm;
 }

   
 /**
   * @ author jagan mohan paspula
   */
 protected ModelAndView handle(HttpServletRequest req,
   HttpServletResponse res, Object command, BindException errors)
   throws Exception {
  // TODO Auto-generated method stub
  String type = loginModel.validate((UserDetails)command);
  if(errors.hasErrors())
  {
  System.out.println("Errors in validation");
  //code to write the error message to client
  //this logic is used to demonstarate practillay the workflow
  //about the handle method returnin null
  PrintWriter out = res.getWriter();
  out.println("we have found some erors in the data submited by you:");
  out.println("<br>Total Number of errors  :<b>"+errors.getErrorCount()+"</br><br/>");
  out.println("The errors are associated with uname field are:<br/>");
  java.util.List<FieldError> errors_list =errors.getFieldErrors("uname");
  for(FieldError error:errors_list)
  out.println(error.getDefaultMessage()+"<br/>");
  out.println("<br>The errors are associated with pass field are:<br/>");
  errors_list =errors.getFieldErrors("pass");
  for(FieldError error:errors_list)
   out.println(error.getDefaultMessage()+"<br/>");
  return null;
  }
  if(type==null)
   return new ModelAndView("/employeelogin.jsp");
  else if(type.equals("admin"))
   return new ModelAndView("/AdminHome.jsp");
  else
   return new ModelAndView("/userHome.jsp");

 }
}

LoginModel.java

package com.spring.jagan.abstractvadiator;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
public class LoginModel {

 private JdbcTemplate jdbcTemplate;
 public LoginModel(JdbcTemplate jt)
 {
  jdbcTemplate = jt;
 }

  /**
   * @author jagan mohan paspula
   * @param uname
   * @param pass
   * @return
   */
 public String validate(UserDetails ud) {
  // TODO Auto-generated method stub
  try
  {
  return(String)jdbcTemplate.queryForObject("select type from userdeatils where username=\'"+ud.getUname()+"\' and userpass=\'"+ud.getPass()+"\'",String.class);
  }
  catch(EmptyResultDataAccessException e)
  {
   return null;
  }
   }
}
UserDeatilsValidator .java

package com.spring.jagan.abstractvadiator;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
/**
 *
 * @author jagan mohan paspula
 *
 */
public class UserDeatilsValidator implements Validator
{
 /**
  * @param Class
  */
 public boolean supports(Class c) {
  // TODO Auto-generated method stub
  return c.equals(UserDetails.class);
 
 }
/**
 * @param Object
 * @param Errors
 */
 public void validate(Object target, Errors errors) {
  // TODO Auto-generated method stub
  UserDetails ud=(UserDetails)target;
  //Rejects the given filed if is empty or contains only whitespace
  /*Note:The Object whose filed is being validated does not need to passed
   * becoz the 'erros' instance can resolve filed values by itself it will
   * usually hold an internal refrence to the target object
   *
   */
  ValidationUtils.rejectIfEmptyOrWhitespace(errors, "uname", "field.required","The user filed cant be empty");
  ValidationUtils.rejectIfEmptyOrWhitespace(errors, "pass", "field.required","The pass filed cant be empty");
  if(ud.getPass()!=null&&ud.getPass().equals("")&& ud.getPass().length()<5);
  {
   errors.rejectValue("pass","field.minlength",new Object[]{Integer.valueOf(5)},"The password conations minmum 5 character");
  }
 }
}

UserDetails .java
package com.spring.jagan.abstractvadiator;
public class UserDetails
{
String uname,pass;
public String getUname() {
 return uname;
}
public void setUname(String uname) {
 this.uname = uname;
}
public String getPass() {
 return pass;
}
public void setPass(String pass) {
 this.pass = pass;
}
}
Note:please follow the above UserHome.jsp and Admin.jsp
dsvalidator.xml
<p><?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:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- Configuring DataSource -->
 <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource">
   <property name="driverClassName">
   <value>oracle.jdbc.driver.OracleDriver</value>
   </property>
   <property name="url">
   <value>jdbc:oracle:thin:@localhost:1521:orcl</value>
   </property>
   <property name="username">
   <value>scott</value>
   </property>
   <property name="password">
   <value>tiger</value>
   </property>
   </bean>
 
  <bean id="jdbctemp" class="org.springframework.jdbc.core.JdbcTemplate">
   <constructor-arg>
   <ref local="datasource"/>
  </constructor-arg>
   </bean>
<bean id="loginModel" class="com.spring.jagan.abstractvadiator.LoginModel">
   <constructor-arg>
   <ref local="jdbctemp"/>
  </constructor-arg>
   </bean>
 
 <bean id="logincnt" class="com.spring.jagan.abstractvadiator.LoginController">
   <constructor-arg>
   <ref local="loginModel"/>
  </constructor-arg>
  <property name="commandClass">
 <value type="java.lang.Class">com.spring.jagan.abstractvadiator.UserDetails</value>
   </property>
   <property name="commandName">
  <value>
  UserDetails
  </value>
   </property>
   <property name="validator">
 <bean class="com.spring.jagan.abstractvadiator.UserDeatilsValidator"/>
   </property>
   </bean>
    <bean id="myurlmapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     <property name="mappings">
     <props>
     <prop key = "/login.spring">logincnt</prop>
     </props>
   </property>
  </bean>

</beans></p>

No comments:

Post a Comment