Friday 23 November 2018

Spring web mvc: read complex objects information

You can extract the information of complex object using . notation.

Example
${employeeDetails.firstName}: Return the firstName of the Employee object.

${employeeDetails.address.city}: Return the city of the employee. In this example, address is another object composed in employee object.

Find the below working application.

HelloWorldController.java
package com.sample.myApp.controllers;

import org.springframework.stereotype.Controller;
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.servlet.ModelAndView;

import com.sample.myApp.model.Employee;
import com.sample.myApp.service.EmployeeService;

@Controller
public class HelloWorldController {

 @RequestMapping(value = "getEmpDetails", method = RequestMethod.POST)
 public ModelAndView getWelcomeMessage(@RequestParam("id") int employeeId) {

  Employee emp = EmployeeService.getEmployee(employeeId);

  String msg = "Details of the employee id " + employeeId;

  ModelAndView modelAndView = new ModelAndView("employeeDetails");
  modelAndView.addObject("message", msg);
  modelAndView.addObject("employeeDetails", emp);
  return modelAndView;
 }

}

Address.java
package com.sample.myApp.model;

public class Address {

 private String city;
 private String country;
 private String street;
 private String houseNumber;

 public String getCity() {
  return city;
 }

 public void setCity(String city) {
  this.city = city;
 }

 public String getCountry() {
  return country;
 }

 public void setCountry(String country) {
  this.country = country;
 }

 public String getStreet() {
  return street;
 }

 public void setStreet(String street) {
  this.street = street;
 }

 public String getHouseNumber() {
  return houseNumber;
 }

 public void setHouseNumber(String houseNumber) {
  this.houseNumber = houseNumber;
 }

}

Employee.java
package com.sample.myApp.model;

public class Employee {
 private int id;
 private String firstName;
 private String lastName;
 private Address address;

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getFirstName() {
  return firstName;
 }

 public void setFirstName(String firstName) {
  this.firstName = firstName;
 }

 public String getLastName() {
  return lastName;
 }

 public void setLastName(String lastName) {
  this.lastName = lastName;
 }

 public Address getAddress() {
  return address;
 }

 public void setAddress(Address address) {
  this.address = address;
 }

}

EmployeeService.java
package com.sample.myApp.service;

import java.util.*;

import com.sample.myApp.model.Address;
import com.sample.myApp.model.Employee;

public class EmployeeService {
 private static Map<Integer, Employee> employees;

 static {
  loadEmployees();
 }

 private static void loadEmployees() {
  Employee emp = new Employee();
  emp.setId(512);
  emp.setFirstName("Krishna");
  emp.setLastName("CR");

  Address address = new Address();
  address.setCity("Kakinada");
  address.setCountry("India");
  address.setHouseNumber("H-123");
  address.setStreet("Beach Road");

  emp.setAddress(address);

  employees = new HashMap<>();
  employees.put(emp.getId(), emp);
 }

 public static Employee getEmployee(int id) {
  return employees.get(id);
 }

}

Create employeeDetails.jsp file under WEB-INF/jsp folder.


employeeDetails.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>Hello World Spring Web MVC</title>
</head>
<body>

 <table>
  <thead>${message}</thead>

  <tr>
   <td>First Name</td>
   <td>${employeeDetails.firstName}</td>
  </tr>

  <tr>
   <td>Last Name</td>
   <td>${employeeDetails.lastName}</td>
  </tr>

  <tr>
   <td>Address</td>
   <td>${employeeDetails.address.city},${employeeDetails.address.country},
    ${employeeDetails.address.street},
    ${employeeDetails.address.houseNumber}</td>
  </tr>
 </table>
</body>
</html>

Create web.xml, HelloWorld-servlet.xml files under WEB-INF folder.


web.xml
<web-app id="WebApp_ID" version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

 <display-name>Spring MVC Hello WorldApplication</display-name>

 <servlet>
  <servlet-name>HelloWorld</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet-mapping>
  <servlet-name>HelloWorld</servlet-name>
  <url-pattern>/</url-pattern>
 </servlet-mapping>

</web-app>

HelloWorld-servlet.xml
<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"
 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">

 <context:component-scan
  base-package="com.sample.myApp" />

 <bean
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/WEB-INF/jsp/" />
  <property name="suffix" value=".jsp" />
 </bean>

</beans>


Create index.jsp file under webapp folder.


index.jsp
<html>
<head>
<title>User Information Page</title>
</head>
<div id="login_form">
 <form method="post" action="/springdemo/getEmpDetails" id="f1">
  <table>
   <tr>
    <td>Enter Employee id :</td>
    <td><input type="text" name="id" value="" /></td>
   </tr>
   <tr>
    <td><input type="submit" name="submit" value="submit"
     style="font-size: 18px;" /></td>
   </tr>
  </table>
 </form>
</div>
</html>

Project structure looks like below.

Run the application on server, you can able to see below image.

Enter the employee id as 512 and click on submit button.


You can able to see below message.



Previous                                                 Next                                                 Home

No comments:

Post a Comment