Sunday, 22 May 2016

Spring MVC Application



HelloYogiController.java

package com.yug.test;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.portlet.ModelAndView;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

@Controller

public class HelloYogiController{

@InitBinder
public void initBinder(WebDataBinder  binder){
//binder.setDisallowedFields(new String[]{"password"});
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy****mm**dd");
binder.registerCustomEditor(Date.class, "dob",new CustomDateEditor(dateFormat, false));
binder.registerCustomEditor(String.class, "username", new nameEditor());
}

@RequestMapping(value="/admissionfrom.html", method= RequestMethod.GET)
public ModelAndView getFormPage() {
ModelAndView mav=new ModelAndView("Admissionfrom");

return mav;
}

@ModelAttribute
public void addingCommonObjects(Model m){
m.addAttribute("msg", "Welcome to Spring MVC Applications using @ModelAttribute");
}

@RequestMapping(value="/submitformpage.html", method= RequestMethod.POST)
public ModelAndView getFormResult(@Valid @ModelAttribute("emp") Employee e, BindingResult result) {

if(result.hasErrors()){
ModelAndView mav=new ModelAndView("Admissionfrom");
return mav;
}
ModelAndView mav=new ModelAndView("HelloPage");

return mav;
}

}

Employee.java

package com.yug.test;

import java.util.ArrayList;
import java.util.Date;

import javax.validation.constraints.Max;
import javax.validation.constraints.Past;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

public class Employee {


private String username;

@Size(min=3, max=11, message="Password size must be between {min} and {max}")
@isYogiFieldValidator(listOfValidPasswords="java|.net|sql")
private String password;

@Max(2222)
private long mobile;
@Past
private Date dob;

private ArrayList<String> skills;
private Address empaddr;
public Address getEmpaddr() {
return empaddr;
}
public void setEmpaddr(Address empaddr) {
this.empaddr = empaddr;
}
public long getMobile() {
return mobile;
}
public void setMobile(long mobile) {
this.mobile = mobile;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
public ArrayList<String> getSkills() {
return skills;
}
public void setSkills(ArrayList<String> skills) {
this.skills = skills;
}



public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}


}

Address.java

package com.yug.test;

public class Address {
private String country;
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public int getPincode() {
return pincode;
}
public void setPincode(int pincode) {
this.pincode = pincode;
}
private String city;
private int pincode;

}

FieldValidator.java

package com.yug.test;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class FieldValidator implements ConstraintValidator<isYogiFieldValidator, String>{
String islistOfValidpwd;
@Override
public void initialize(isYogiFieldValidator isFieldValidator){
this.islistOfValidpwd = isFieldValidator.listOfValidPasswords();
}
public boolean isValid(String skills, ConstraintValidatorContext ctx) {
if(skills == null){
return false;
}
if(skills.matches(islistOfValidpwd)){
return true;
}else{
return false;
}
}

}


isYogiFieldValidator.java

package com.yug.test;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import javax.validation.Constraint;
import javax.validation.Payload;

@Documented
@Constraint(validatedBy= FieldValidator.class)
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)

public @interface isYogiFieldValidator {

//String listOfValidPasswords() default "java|.net|sql"; 
String listOfValidPasswords();  
String message() default "Please, provide skills which you have, Accepted passwords are java, .net, and sql";
Class<?>[] groups() default{};
Class<? extends Payload>[] payload() default{};
}


nameEditor.java

package com.yug.test;

import java.beans.PropertyEditorSupport;

public class nameEditor extends PropertyEditorSupport {

@Override
public void setAsText(String username)throws IllegalArgumentException{
if(username.contains("Mr.") || username.contains("Mrs.")){
setValue(username);
}else{
username="Ms."+username;
setValue(username);
}
}
}


AdmissionForm.java

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1><b>${msg}</b></h1>
 <form:errors path="emp.*"/>  
<form action="/firstSpringMVCEx/submitformpage.html" method="post">
<table>
<td><tr>Enter User Name :</tr>
</td><td><tr><input type="text" name="username"></tr></td><br><br>
<td><tr>Enter User - Pwd :</tr>
</td><td><tr><input type="password" name="password"></tr></td><br><br>
<td align="right"><tr> </tr>

<td><tr>Enter ur mobile # :</tr>
</td><td><tr><input type="text" name="mobile"></tr></td><br><br>

<td><tr>Enter User DOB :</tr>
</td><td><tr><input type="text" name="dob"></tr></td><br><br>
<td><tr>Enter Skills set :</tr>
</td><td><tr><select name="skills" multiple="multiple">
<option value="java">Java</option>
<option value=".net">.Net</option>
<option value="sql">SQL</option>

</tr></td><br><br>

</td><td align="center">
</table>
<table>
<tr>
<td>Country :</td><td><input type="text" name="empaddr.country"/></td></tr>
<tr>
<td>City :</td><td><input type="text" name="empaddr.city"/></td></tr>
<tr>
<td>Pincode :</td><td><input type="text" name="empaddr.pincode"/></td></tr>
</table>
<tr><input type="submit" value="submit"></tr></td>
</form>
</body>
</html>

empMassages.properties

Size = please, Enter a value for {0} field between {2} and {1} and dynamically that is cacheSeconds property.
#Size = please, Enter a value for password field between min and max and only size annotation is using.
#Size.java.lang.String = please, Enter a value for password field between 2 and 10 and type added.
#Size.password = please, Enter a value for password field between 2 and 10 and reference removed.
#Size.emp.password = please, Enter a value for password field between 2 and 10.

HelloPage.jsp

<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
 
<h1><b>${msg}</b></h1>


<table>
<tr>
<td>user name is : </td>
<td>${emp.username}</td>
</tr>
<tr>
<td>user pwd is : </td>
<td>${emp.password}</td>
</tr>
<tr>
<td>user mobile is : </td>
<td>${emp.mobile}</td>
</tr>
<tr>
<td>user DOB is : </td>
<td>${emp.dob}</td>
</tr>
<tr>
<td>user skills is : </td>
<td>${emp.skills}</td>
</tr>

<tr>
<td>Employee Address :</td>
<td>
County :${emp.empaddr.country}
City :${emp.empaddr.city}
Pincode :${emp.empaddr.pincode}
</td></tr>
</table>
</body>
</html>

spring-dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
        http://www.springframework.org/schema/beans     
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc.xsd ">

  <context:component-scan base-package="com.yug.test"></context:component-scan> 
 <mvc:annotation-driven></mvc:annotation-driven>
 
 
 <bean id="viewResolver"  class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
    <property name="prefix">  
      <value>/WEB-INF/</value>  
    </property>  
    <property name="suffix">  
      <value>.jsp</value>  
    </property>  
  </bean> 
  
  <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
  <property name="basename" value="/WEB-INF/empMessages"></property>
  <property name="cacheSeconds" value="1"></property>
  </bean> 
</beans>  

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" version="3.0">
  <display-name>firstSpringMVCEx</display-name>
   
  <servlet>
  <servlet-name>spring-dispatcher</servlet-name>
        <servlet-class>
             org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
  <servlet-name>spring-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
  </servlet-mapping>
<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>
  
</web-app>


No comments:

Post a Comment