Spring MVC @Controller Annotation Example
April 19, 2015
In spring MVC, to create a controller class, spring provides @Controller annotation. This annotation is the specialization of @Component. Spring container will identify the controller class by classpath scanning. If we have created our controller in the package com.concretepage.controller then we need to assign this package with @ComponentScan("com.concretepage.controller ") in java config. We can be configure controller either by base package or by configuring individual controller. In our example we have configured base package. It means spring will scan that java package for controllers.
Create A Class using @Controller
To test the @Controller, we are creating a class which will be annotated with @Controller. We are creating a method that will serve the request for a specific URL pattern annotated by @RequestMapping.HelloWorldController.java
package com.concretepage.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller @RequestMapping("/testapp") public class HelloWorldController { @RequestMapping(value="hello") public String createUser(@RequestParam("name") String name, ModelMap model) { model.addAttribute("name", name); return "success"; } }
Configure Controller package in Java Config or Spring XML
In our demo we are using java config to configure bean. @Controller annotation is scanned by spring. So our class annotated with @Controller is available in spring container. Find the java configuration file.AppConfig.java
package com.concretepage.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.view.JstlView; import org.springframework.web.servlet.view.UrlBasedViewResolver; @Configuration @ComponentScan("com.concretepage.controller") public class AppConfig { @Bean public UrlBasedViewResolver setupViewResolver() { UrlBasedViewResolver resolver = new UrlBasedViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); resolver.setViewClass(JstlView.class); return resolver; } }
<context:component-scan base-package="com.concretepage.controller" />
Create a View Page
When the method in controller runs, our view page is displayed. Find the JSP.success.jsp
<html> <head> <title> @Controller Demo </title> </head> <body> <h1>Hello : ${name}</h1> </body> </html>
Output
To check the output, run the URL http://localhost:8080/concretepage-1/testapp/hello?name=RamWe will get the output.
