Thursday, 22 November 2018

Spring web mvc: @RequestParam form handling example

This is continuation to my previous post. In this post, i am going to show you, how can you map form request parameters to the method parameters using @RequestParam annotation.

Usually, we submit the form data as part of POST request.

Belo snippet maps the form data username to name, age to userAge.
@RequestMapping(value = "welcome", method = RequestMethod.POST)
public ModelAndView getWelcomeMessage(@RequestParam("userName") String name, @RequestParam("age") int userAge) {

}

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;

@Controller
@RequestMapping("greeting")
public class HelloWorldController {

 @RequestMapping(value = "welcome", method = RequestMethod.POST)
 public ModelAndView getWelcomeMessage(@RequestParam("userName") String name, @RequestParam("age") int userAge) {

  String msg = String.format("Hi %s, you are %d years old", name, userAge);

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

}


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

hello.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>
 <h2>${message}</h2>
</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
User Information Page
User Name :
Age :

<html>
<head>
<title>User Information Page</title>
</head>
<div id="login_form">
 <form method="post" action="/springdemo/greeting/welcome"
  id="f1">
  <table>
   <tr>
    <td class="f1_label">User Name :</td>
    <td><input type="text" name="userName" value="" /></td>
   </tr>
   <tr>
    <td class="f1_label">Age :</td>
    <td><input type="text" name="age" 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 form.

Give the User Name as ‘krishna’ and age as 29 hit the submit button. You can able to see below kind of output.



Previous                                                 Next                                                 Home

No comments:

Post a Comment