Skip to content

Commit 2c19f44

Browse files
author
Frank Oh
committed
added spring modelattribute example
1 parent e521c80 commit 2c19f44

24 files changed

Lines changed: 627 additions & 0 deletions

File tree

pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
<groupId>com.advenoh</groupId>
55
<artifactId>tutorials-java</artifactId>
66
<version>1.0-SNAPSHOT</version>
7+
<modules>
8+
<module>spring-model-attribute</module>
9+
<module>spring-model-attribute-method</module>
10+
</modules>
711
<packaging>pom</packaging>
812
<name>tutorials-java</name>
913

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>tutorials-java</artifactId>
7+
<groupId>com.advenoh</groupId>
8+
<version>1.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<groupId>com.advenoh</groupId>
13+
<artifactId>spring-model-attribute-method</artifactId>
14+
<version>1.0-SNAPSHOT</version>
15+
<packaging>war</packaging>
16+
17+
<name>spring-model-attribute-method Maven Webapp</name>
18+
<!-- FIXME change it to the project's website -->
19+
<url>http://www.example.com</url>
20+
21+
<properties>
22+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23+
<org.springframework-version>4.3.3.RELEASE</org.springframework-version>
24+
<jackson.version>2.7.5</jackson.version>
25+
</properties>
26+
27+
<dependencies>
28+
<dependency>
29+
<groupId>org.springframework</groupId>
30+
<artifactId>spring-webmvc</artifactId>
31+
<version>${org.springframework-version}</version>
32+
</dependency>
33+
<dependency>
34+
<groupId>com.fasterxml.jackson.core</groupId>
35+
<artifactId>jackson-databind</artifactId>
36+
<version>${jackson.version}</version>
37+
</dependency>
38+
<dependency>
39+
<groupId>javax.servlet</groupId>
40+
<artifactId>javax.servlet-api</artifactId>
41+
<version>3.0.1</version>
42+
<scope>provided</scope>
43+
</dependency>
44+
<dependency>
45+
<groupId>org.fluttercode.datafactory</groupId>
46+
<artifactId>datafactory</artifactId>
47+
<version>0.8</version>
48+
</dependency>
49+
50+
<dependency>
51+
<groupId>junit</groupId>
52+
<artifactId>junit</artifactId>
53+
<version>4.12</version>
54+
<scope>test</scope>
55+
</dependency>
56+
<dependency>
57+
<groupId>org.springframework</groupId>
58+
<artifactId>spring-test</artifactId>
59+
<version>${org.springframework-version}</version>
60+
</dependency>
61+
<dependency>
62+
<groupId>org.projectlombok</groupId>
63+
<artifactId>lombok</artifactId>
64+
<version>1.18.4</version>
65+
</dependency>
66+
<dependency>
67+
<groupId>ch.qos.logback</groupId>
68+
<artifactId>logback-classic</artifactId>
69+
<version>1.2.3</version>
70+
</dependency>
71+
</dependencies>
72+
73+
<build>
74+
<plugins>
75+
<plugin>
76+
<groupId>org.apache.maven.plugins</groupId>
77+
<artifactId>maven-compiler-plugin</artifactId>
78+
<version>3.1</version>
79+
<configuration>
80+
<source>1.8</source>
81+
<target>1.8</target>
82+
</configuration>
83+
</plugin>
84+
</plugins>
85+
</build>
86+
</project>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.logicbig.example;
2+
3+
import org.springframework.context.annotation.Bean;
4+
import org.springframework.context.annotation.Configuration;
5+
import org.springframework.web.servlet.ViewResolver;
6+
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
7+
import org.springframework.web.servlet.view.InternalResourceViewResolver;
8+
9+
@Configuration
10+
@EnableWebMvc
11+
public class MyViewConfig {
12+
@Bean
13+
public ViewResolver viewResolver() {
14+
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
15+
viewResolver.setPrefix("/WEB-INF/views/");
16+
viewResolver.setSuffix(".jsp");
17+
return viewResolver;
18+
}
19+
20+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.logicbig.example;
2+
3+
import org.springframework.context.annotation.Bean;
4+
import org.springframework.context.annotation.Configuration;
5+
import org.springframework.context.annotation.Import;
6+
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
7+
8+
@EnableWebMvc
9+
@Configuration
10+
@Import(MyViewConfig.class)
11+
public class MyWebConfig {
12+
13+
@Bean
14+
public UserController tradeParamRequestController() {
15+
return new UserController();
16+
}
17+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.logicbig.example;
2+
3+
import org.springframework.web.WebApplicationInitializer;
4+
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
5+
import org.springframework.web.servlet.DispatcherServlet;
6+
7+
import javax.servlet.ServletContext;
8+
import javax.servlet.ServletException;
9+
import javax.servlet.ServletRegistration;
10+
11+
public class MyWebInitializer implements WebApplicationInitializer {
12+
13+
@Override
14+
public void onStartup(ServletContext servletContext) throws ServletException {
15+
AnnotationConfigWebApplicationContext ctx =
16+
new AnnotationConfigWebApplicationContext();
17+
ctx.register(MyWebConfig.class);
18+
ctx.setServletContext(servletContext);
19+
20+
ServletRegistration.Dynamic servlet =
21+
servletContext.addServlet("springDispatcherServlet",
22+
new DispatcherServlet(ctx));
23+
24+
servlet.setLoadOnStartup(1);
25+
servlet.addMapping("/");
26+
}
27+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.logicbig.example;
2+
3+
import org.springframework.stereotype.Controller;
4+
import org.springframework.ui.Model;
5+
import org.springframework.web.bind.annotation.ModelAttribute;
6+
import org.springframework.web.bind.annotation.PathVariable;
7+
import org.springframework.web.bind.annotation.RequestMapping;
8+
import org.springframework.web.bind.annotation.RequestParam;
9+
10+
import java.time.LocalDateTime;
11+
import java.util.logging.Logger;
12+
13+
@Controller
14+
@RequestMapping("users")
15+
public class UserController {
16+
private static final Logger LOGGER = Logger.getLogger(UserController.class.getName());
17+
18+
private static int counter = 0;
19+
20+
@RequestMapping
21+
public String handleRequest(Model model) {
22+
model.addAttribute("msg", "user request received");
23+
LOGGER.info(model.toString());
24+
return "my-page";
25+
}
26+
27+
@RequestMapping("{id}")
28+
public String handleRequestById(@PathVariable("id") String id, Model model) {
29+
model.addAttribute("msg", "user request received for the id : " + id);
30+
LOGGER.info(model.toString());
31+
return "my-page";
32+
}
33+
34+
@ModelAttribute("time")
35+
public LocalDateTime getRequestTime() {
36+
return LocalDateTime.now();
37+
}
38+
39+
@ModelAttribute("visits")
40+
public int getRequestCount() {
41+
return ++counter;
42+
}
43+
44+
@ModelAttribute("querier")
45+
public void populateIds(@RequestParam(value = "querier", required = false) String querier, Model model) {
46+
model.addAttribute("querier", querier == null ? "quest" : querier);
47+
}
48+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration>
3+
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
4+
<Target>System.out</Target>
5+
<encoder>
6+
<pattern>%5p &lt;%d{yyyy-MM-dd HH:mm:ss}&gt;[%C:%L] [%thread] %m%n</pattern>
7+
</encoder>
8+
</appender>
9+
<root level="INFO">
10+
<appender-ref ref="stdout"/>
11+
</root>
12+
</configuration>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<%@ page language="java"
2+
contentType="text/html; charset=ISO-8859-1"
3+
pageEncoding="ISO-8859-1" %>
4+
<html>
5+
<body>
6+
<h3> Message : ${msg}
7+
<h3>
8+
<p>Time: ${time}</p>
9+
<p>Total Visits: ${visits}</p>
10+
<br/>
11+
<p>Requested by : ${querier} </p>
12+
</body>
13+
</html>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<!DOCTYPE web-app PUBLIC
2+
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
3+
"http://java.sun.com/dtd/web-app_2_3.dtd" >
4+
5+
<web-app>
6+
<display-name>Archetype Created Web Application</display-name>
7+
</web-app>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<html>
2+
<body>
3+
<h2>Hello World!</h2>
4+
</body>
5+
</html>

0 commit comments

Comments
 (0)