Spring MVC – @RequestParam

We have already discussed an example of Spring MVC in our previous tutorials. Here, we are going to discuss the @RequestParam annotation. In the last case, we had created a bean class for defining the parameters. But in the following example, we are going to use the @RequestParam annotation for automatic binding of the method parameter with the form data.

@RequestParam – It is used to bind the form data values with the parameters available in the Controller class methods. In other words, it indicates that a method parameter can be mapped with a web request parameter. It is used in the Controller class method.

Example of Spring MVC using @RequestParam

Here, we are going to create an example of Spring MVC using the @RequestParam annotation.

Following are the steps to create an example using @RequestParam:

  • Create a request page

In this step, we are going to create a request page named index.jsp.

index.jsp

 <html>
 <body>
 <h2> Spring MVC Web application </h2>
 <a href = "home_page"> Home page | </a>
 <a href = "about_us"> About Us | </a>
 <a href = "general-form"> Query Form | </a>
 <a href= "register-form" > Registration Form </a>
 </body>
 </html> 
  • Create the Controller class

In this step, we are going to create a Controller class named MainController.java, which returns the JSP view pages.

MainController.java

 import javax.servlet.http.HttpServletRequest;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 @Controller
 public class MainController {
             @RequestMapping("/register-form")
             public String showRegiterForm() {
                         return "registerform" ;
             }
             @RequestMapping("/regis-form")
             public String showRegisterFormData(@RequestParam("FirstName") String fname,
                                     @RequestParam("LastName") String lname, 
                                     @RequestParam("StudentCourse") String course,
                                     Model m) {
                         String result = "Hi! " + fname+" "+ lname ;  
                         String result2 = "Your Course is " + course ;
                         m.addAttribute("message", result);
                         m.addAttribute("message2" ,result2); 
                         return "regisformdata" ;
             }
  } 

In the above class (MainController), we have used @RequestParam annotation instead of using bean class. It is used for retrieving the form data and mapping it with the parameters available in the method.

Here, we have three parameters available in the form FirstName, LastName, and StudentCourse.

  • Add the entry of Controller in web.xml

In this step, we are going to add the entry of the Controller into web.xml.

web.xml

 <?xml version = "1.0" encoding = "UTF-8"?>
 <web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
             xmlns = "http://xmlns.jcp.org/xml/ns/javaee"
             xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             id = "WebApp_ID" version = "3.1">
             <display-name>spring-mvc-demo</display-name>
             <absolute-ordering />
             <!-- Spring MVC Configs -->
             <!-- Step 1: Configure Spring MVC Dispatcher Servlet -->
             <servlet>
                         <servlet-name>dispatcher</servlet-name>
                         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                         <init-param>
                                     <param-name>contextConfigLocation</param-name>
                                     <param-value>/WEB-INF/spring-servlet.xml</param-value>
                         </init-param>
                         <load-on-startup>1</load-on-startup>
             </servlet>
             <!-- Step 2: Set up URL mapping for Spring MVC Dispatcher Servlet -->
             <servlet-mapping>
                         <servlet-name>dispatcher</servlet-name>
                         <url-pattern>/</url-pattern>
             </servlet-mapping>
 </web-app> 
  • Create another XML file for component scanning

In this step, we are going to create an XML file named spring-servlet.xml, which is used for component scanning.

spring-servlet.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: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">
             <!-- Step 3: Add support for component scanning -->
             <context:component-scan base-package = " com.app.SpringMVC4" />
             <!-- Step 4: Add support for conversion, formatting and validation support -->
             <mvc:annotation-driven/>
             <!-- Step 5: Define Spring MVC view resolver -->
             <bean
                         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                         <property name = "prefix" value = "/WEB-INF/view/" />
                         <property name = "suffix" value = ".jsp" />
             </bean>
 </beans> 
  • Create all View pages

In this step, we are going to create all the view pages (JSP pages) required in the application.

registerform.jsp

 <%@ page language = "java" contentType = "text/html; charset=ISO-8859-1"
     pageEncoding = "ISO-8859-1"%>
 <!DOCTYPE html>
 <html>
 <head>
 <meta charset = "ISO-8859-1">
 </head>
 <body>
 <form action = "regis-form" method="get" >
 First Name: <input type = "text" name = "FirstName" />
  <br></br>
 Last Name: <input type = "text" name = "LastName" />
  <br></br>
 Student Course: <input type = "text" name = "StudentCourse" />
 <br></br> 
 <input type = "submit" value  = "Submit"/>
 </form>
 </body>
 </html> 

regisformdata.jsp

 <%@ page language = "java" contentType = "text/html; charset=ISO-8859-1"
     pageEncoding = "ISO-8859-1"%>
 <!DOCTYPE html>
 <html>
 <head>
 <meta charset = "ISO-8859-1">
 <title>Insert title here</title>
 </head>
 <body>
 <h3>Spring MVC Application</h3>
 <br></br>
 FIRST NAME: ${param.FirstName}
 <br></br>
 LAST NAME: ${param.LastName} 
 <br></br>
 COURSE: ${param.StudentCourse}
 <br></br>
 MESSAGE1: ${message}
 </br>
 MESSAGE2: ${message2}
 </body>
 </html> 

Output

Spring MVC – @RequestParam
Spring MVC – @RequestParam 1
Spring MVC – @RequestParam 2
Spring MVC – @RequestParam 3