Spring MVC + Jetty container example
1. Create a maven project and add below dependencies
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.2.3.v20140905</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>9.2.3.v20140905</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
2. Create Spring configuration class
package com.vinod.vinod_spring_test; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @
Configuration @EnableWebMvc
@ComponentScan
(basePackages =
{ "com.vinod.vinod_spring_test"}) public class SpringWebConfig
extends WebMvcConfigurerAdapter
{ @
Override public void addResourceHandlers
(ResourceHandlerRegistry registry
) { registry.
addResourceHandler("/**").
addResourceLocations("classpath:/files/"); } @
Override public void addViewControllers
(ViewControllerRegistry registry
) { registry.
addViewController("/").
setViewName("redirect:NewFile.html"); } } 3. Create a controller class
package com.vinod.vinod_spring_test; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller
public class MyController
{ @RequestMapping
(value =
"/helloworld", method = RequestMethod.
GET) public String getHelloworld
() { return "redirect:NewFile.html"; } } 4. Create html file
Place this html file in to your src/main/resource/files folder (Create a directory named files)
5. Create a stand alone class to configure and start Jetty server.
package com.vinod.vinod_spring_test; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; /**
* Hello world!
*
*/ public class App
{ public static void main
(String[] args
) { final AnnotationConfigWebApplicationContext applicationContext =
new AnnotationConfigWebApplicationContext
(); applicationContext.
register(SpringWebConfig.
class); final ServletHolder servletHolder =
new ServletHolder
(new DispatcherServlet
(applicationContext
)); final ServletContextHandler context =
new ServletContextHandler
(); context.
setContextPath("/"); context.
addServlet(servletHolder,
"/*"); final Server server =
new Server
(8080); server.
setHandler(context
); try { server.
start(); server.
join(); } catch (Exception e
) { server.
destroy(); e.
printStackTrace(); } } } 6. Run it..
http://localhost:8080/helloworld
7. Download source code here
https://github.com/kkvinodkumaran/myrepository/tree/master/vinod-spring-web