Giter VIP home page Giter VIP logo

gs-validating-form-input's Introduction

This guide walks you through the process of configuring a web application form to support validation.

What You Will Build

You will build a simple Spring MVC application that takes user input and checks the input by using standard validation annotations. You will also see how to display the error message on the screen so that the user can re-enter input to make it be valid.

Starting with Spring Initializr

You can use this pre-initialized project and click Generate to download a ZIP file. This project is configured to fit the examples in this tutorial.

To manually initialize the project:

  1. Navigate to https://start.spring.io. This service pulls in all the dependencies you need for an application and does most of the setup for you.

  2. Choose either Gradle or Maven and the language you want to use. This guide assumes that you chose Java.

  3. Click Dependencies and select Spring Web, Thymeleaf, and Validation.

  4. Click Generate.

  5. Download the resulting ZIP file, which is an archive of a web application that is configured with your choices.

Note
If your IDE has the Spring Initializr integration, you can complete this process from your IDE.
Note
You can also fork the project from Github and open it in your IDE or other editor.

Create a PersonForm Object

The application involves validating a user’s name and age, so you first need to create a class that backs the form used to create a person. The following listing (from src/main/java/com/example/validatingforminput/PersonForm.java) shows how to do so:

link:complete/src/main/java/com/example/validatingforminput/PersonForm.java[role=include]

The PersonForm class has two attributes: name and age. It is flagged with a few standard validation annotations:

  • @Size(min=2, max=30): Allows names between 2 and 30 characters long.

  • @NotNull: Does not allow a null value, which is what Spring MVC generates if the entry is empty.

  • @Min(18): Does not allow the age to be less than 18.

In addition to that, you can also see getters and setters for name and age and a convenient toString() method.

Create a Web Controller

Now that you have defined a form-backing object, it is time to create a simple web controller. The following listing (from src/main/java/com/example/validatingforminput/WebController.java) shows how to do so:

link:complete/src/main/java/com/example/validatingforminput/WebController.java[role=include]

This controller has a GET method and a POST method. Both methods are mapped to /.

The showForm method returns the form template. It includes a PersonForm in its method signature so that the template can associate form attributes with a PersonForm.

The checkPersonInfo method accepts two arguments:

  • A personForm object marked with @Valid to gather the attributes filled out in the form.

  • A bindingResult object so that you can test for and retrieve validation errors.

You can retrieve all the attributes from the form, which is bound to the PersonForm object. In the code, you test for errors. If you encounter an error, you can send the user back to the original form template. In that situation, all the error attributes are displayed.

If all of the person’s attribute are valid, it redirects the browser to the final results template.

Build an HTML Front End

Now build the “main” page, as the following listing (from src/main/resources/templates/form.html) shows:

link:complete/src/main/resources/templates/form.html[role=include]

The page contains a simple form, with each of its field in a separate cell in a table. The form is geared to post to /. It is marked as being backed up by the personForm object that you saw in the GET method in the web controller. This is known as a “bean-backed form”. There are two fields in the PersonForm bean, and you can see that they are tagged with th:field="*{name}" and th:field="*{age}". Next to each field is a secondary element that is used to show any validation errors.

Finally, you have a button that submits the form. In general, if the user enters a name or age that violates the @Valid constraints, it bounces back to this page with the error message displayed. If a valid name and age is entered, the user is routed to the next web page.

The following example (from src/main/resources/templates/results.html) shows the results page:

link:complete/src/main/resources/templates/results.html[role=include]
Note
In this simple example, these web pages do not have any sophisticated CSS or JavaScript.

Run the Application

For this application, you are using the template language of Thymeleaf. This application needs more than raw HTML. The Spring Initializr created an application class for you. The following listing (from src/main/java/com/example/validatingforminput/ValidatingFormInputApplication.java) shows that class:

link:complete/src/main/java/com/example/validatingforminput/ValidatingFormInputApplication.java[role=include]

To activate Spring MVC, you would normally add @EnableWebMvc to the Application class. But Spring Boot’s @SpringBootApplication already adds this annotation when it detects spring-webmvc on your classpath. This same annotation lets it find the annotated @Controller class and its methods.

The Thymeleaf configuration is also taken care of by @SpringBootApplication. By default, templates are located in the classpath under templates/ and are resolved as views by stripping the '.html' suffix off the file name. (Thymeleaf settings can be changed and overridden in a variety of ways, depending on what you need to achieve, but the details are not relevant to this guide.)

The application should be up and running within a few seconds.

If you visit http://localhost:8080/, you should see something like the following image:

valid 01

The following pair of images show what happens if you enter N for the name and 15 for your age and click on Submit:

valid 02
valid 03

The preceding images show that, because the values violated the constraints in the PersonForm class, you get bounced back to the “main” page. Note that, if you click on Submit with nothing in the entry box, you get a different error, as the following image shows:

valid 04

If you enter a valid name and age, you end up on the results page, as the following image shows:

valid 05

Summary

Congratulations! You have coded a simple web application with validation built into a domain object. This way, you can ensure that the data meets certain criteria and that the user correctly inputs the data.

gs-validating-form-input's People

Contributors

abarrak avatar bclozel avatar btalbott avatar buzzardo avatar cbeams avatar ericperkins avatar eternity-yarr avatar gregturn avatar habuma avatar heaven31415 avatar mvitz avatar odrotbohm avatar robertmcnees avatar royclarkson avatar spring-operator avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gs-validating-form-input's Issues

How to do this if the url contains a parameter?

How do I make this work with a path variable? Suppose the URL is /user/123 for example.

The controller would have something like

@PostMapping("/user/{userId}")
public String updateUser(@PathVariable("userId") long id, @Valid PersonForm personForm, BindingResult bindingResult) {
  if (bindingResult.hasErrors()) {
            return "form";
        }

        return "redirect:/user/{userId}";
}

I tested this and the redirect in the success case works, but the error case seems to work at first, but if you then update the form again and submit again, it does not go through the same controller method. So how to make this work?

Guide is broken

It seems the "Validating Form Input" guide is broken.

I get a CLassNotFoundException when I input an invalid age.

Upgrade Spring Boot version

An easy (at least relatively speaking) place for beginners to jump in is to upgrade to the latest patch release of Spring Boot. I'm opening this issue to encourage people to dive in.

The following files need to have the Spring Boot version updated:

initial/build.gradle
initial/pom.xml
complete/build.gradle
complete/pom.xml

Redirect should be done after success, not after failure

Currently the controller method is implemented to redirect after validation failure and does not on success. It should be the other way around.

Something like this:

@RequestMapping(value="/", method=RequestMethod.POST)
public String enterAge(@Valid Person person, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
        return "results";
    }
    return "redirect:/";
}

Missing dependency `spring-boot-starter-validation`

The org.springframework.boot:spring-boot-starter-validation dependency is not mentioned in the instruction. It is not present in the initial code, but it is in the complete code. Following the instruction step-by-step will not produce the desired result.

  • Spring Initializr. Add Validation to dependencies.
    In the current version is:
This example needs the Spring Web and Thymeleaf dependencies.

Should be:

This example needs the Spring Web, Thymeleaf and Validation dependencies.
  • Maven. Add validation library to dependencies:
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-validation</artifactId>
		</dependency>
  • Gradle. Add validation library to dependencies:
	implementation 'org.springframework.boot:spring-boot-starter-validation'
  • The initial code should have this dependency as well.

I have a simple question..

my ENV is Spring Tool Suite 3 and Window 10

when I get Follow this document ( validating-form-input)

writing pom,xml this code. ..


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>validating-form-input</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>validating-form-input</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

but i have some error about lib

image

no lib about javax.validation so, add maven dependency


	<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
		<dependency>
		    <groupId>javax.validation</groupId>
		    <artifactId>validation-api</artifactId>
		    <version>2.0.1.Final</version>
		</dependency>

and. I can fix redline and error but
this code have another error

image

submit this data I get result error like this picture

image

but.. I can pass this data

image

why same code differ result????

ps.. Sorry my eng skill.. is not good

unable to call web application from the spring boot to send params through url

I am try to using Angularjs2 with spring boot application every thing working fine with the small issue.

Description:

step1. if we have default router like router('') meaning localhost:8080/ it is calling index.html page with out having issues.

step2. if we have added context path like router('accountsummary') meaning localhost:8080/accountsummary its not working. when i give like below configuration in spring boot conf like below:

@configuration
public class WebController extends WebMvcConfigurerAdapter{
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/accountSummary").setViewName("index.html");
}
}

it was working fine.

  1. when i want to configure like route('accountsummary/:reqid). reqid is the parameter meaning i want to call like localhost:8080/accountsummary/abc it is not working. i have given like (/**)

@configuration
public class WebController extends WebMvcConfigurerAdapter{
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/accountSummary/**").setViewName("index.html");
}
}

its not working and giving like below:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Jun 30 15:11:38 EDT 2016
There was an unexpected error (type=Not Found, status=404).
No message available

Can any one please help me out

Ll

lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllpl
Lllllllllllllllllllllll

Validation Not Work

I tried over and over by tracking tutorial but validation not work in name size and age size. No matter always redirecting the result page saying congratulations. I think tutorial is wrong and must be examined and fixed.

Typo in 'Create a web controller' section

Hello,

I found a small typo in the Create a web controller section of this guide : it says that the checkPersonFormInfo method accepts a person argument, while in the example the argument is named personForm (cf here).

Kotlin version dosen't work

I translated this project to a kotlin project. I'm pretty sure that the code is right. But the validation didn't work. I can post "name=a&age=1", and get a success response.
Here are my kotlin project files:
FormValidate-kotlin-version.zip

Main file:

package net.pandolia.springdemo

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.stereotype.Controller
import org.springframework.validation.BindingResult
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
import javax.validation.Valid
import javax.validation.constraints.Min
import javax.validation.constraints.NotNull
import javax.validation.constraints.Size

data class PersonForm(
    val name: @NotNull @Size(min = 2, max = 30) String?,
    val age: @NotNull @Min(18) Int?
)

@Controller
class WebController : WebMvcConfigurer {

    override fun addViewControllers(registry: ViewControllerRegistry) {
        registry.addViewController("/results").setViewName("results")
    }

    @GetMapping("/")
    fun showForm(personForm: PersonForm) = "form"

    @PostMapping("/")
    fun checkPersonInfo(personForm: @Valid PersonForm, bindingResult: BindingResult): String {
        if (bindingResult.hasErrors()) {
            return "form"
        }

        return "redirect:/results"
    }

}

@SpringBootApplication
class DemoApplication

fun main(args: Array<String>) {
    runApplication<DemoApplication>(*args)
}

Can someone help me, please.

gradle build works, maven build has runtime error

I tried both gradle and maven build of the "complete" project. Only the latter produces a http 500. I already "unmanaged" the dependencies in maven and forced the version given in the gradle file with no different results. Please take a look at the attached log with system.out & stacktrace:

. ____ _ __ _ _
/\ / ' __ _ ()_ __ __ _ \ \ \
( ( )_
| '_ | '| | ' / ` | \ \ \
/ )| |)| | | | | || (| | ) ) ) )
' |
| .**|| ||| |**, | / / / /
=========||==============|/=///_/
:: Spring Boot :: (v0.5.0.M6)

2014-01-09 15:58:21.611 INFO 5352 --- [ main] hello.Application : Starting Application on Fix with PID 5352 ([...]\gs-validating-form-input-complete\target\gs-validating-form-input-0.1.0.jar started by [...])
2014-01-09 15:58:21.679 INFO 5352 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@56fe8d80: startup date [Thu Jan 09 15:58:21 CET 2014]; root of context hierarchy
2014-01-09 15:58:24.289 INFO 5352 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat
2014-01-09 15:58:24.290 INFO 5352 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.42
2014-01-09 15:58:24.468 INFO 5352 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2014-01-09 15:58:24.468 INFO 5352 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2793 ms
2014-01-09 15:58:24.832 INFO 5352 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet'
2014-01-09 15:58:24.872 INFO 5352 --- [ost-startStop-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started
2014-01-09 15:58:25.113 INFO 5352 --- [ost-startStop-1] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [//favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2014-01-09 15:58:25.467 INFO 5352 --- [ost-startStop-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String hello.WebController.enterAge(hello.Person,org.springframework.validation.BindingResult,org.springframework.web.servlet.mvc.support.RedirectAttributes)
2014-01-09 15:58:25.469 INFO 5352 --- [ost-startStop-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String hello.WebController.showForm(hello.Person)
2014-01-09 15:58:25.583 INFO 5352 --- [ost-startStop-1] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/
] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2014-01-09 15:58:25.586 INFO 5352 --- [ost-startStop-1] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2014-01-09 15:58:26.614 INFO 5352 --- [ost-startStop-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 1739 ms
2014-01-09 15:58:26.862 INFO 5352 --- [ main] hello.Application : Started Application in 6.445 seconds
2014-01-09 15:58:42.828 INFO 5352 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine : [THYMELEAF] INITIALIZING TEMPLATE ENGINE
2014-01-09 15:58:42.941 INFO 5352 --- [nio-8080-exec-1] o.t.t.AbstractTemplateResolver : [THYMELEAF] INITIALIZING TEMPLATE RESOLVER: org.thymeleaf.templateresolver.ServletContextTemplateResolver
2014-01-09 15:58:42.941 INFO 5352 --- [nio-8080-exec-1] o.t.t.AbstractTemplateResolver : [THYMELEAF] TEMPLATE RESOLVER INITIALIZED OK
2014-01-09 15:58:42.942 INFO 5352 --- [nio-8080-exec-1] o.t.m.AbstractMessageResolver : [THYMELEAF] INITIALIZING MESSAGE RESOLVER: org.thymeleaf.spring3.messageresolver.SpringMessageResolver
2014-01-09 15:58:42.942 INFO 5352 --- [nio-8080-exec-1] o.t.m.AbstractMessageResolver : [THYMELEAF] MESSAGE RESOLVER INITIALIZED OK
2014-01-09 15:58:42.950 INFO 5352 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine.CONFIG : [THYMELEAF] TEMPLATE ENGINE CONFIGURATION:
[THYMELEAF] * Cache Factory implementation: org.thymeleaf.cache.StandardCacheManager
[THYMELEAF] * Template modes:
[THYMELEAF] * VALIDXML
[THYMELEAF] * LEGACYHTML5
[THYMELEAF] * HTML5
[THYMELEAF] * XHTML
[THYMELEAF] * XML
[THYMELEAF] * VALIDXHTML
[THYMELEAF] * Template resolvers (in order):
[THYMELEAF] * org.thymeleaf.templateresolver.ServletContextTemplateResolver
[THYMELEAF] * Message resolvers (in order):
[THYMELEAF] * org.thymeleaf.spring3.messageresolver.SpringMessageResolver
[THYMELEAF] * Dialect: org.thymeleaf.spring3.dialect.SpringStandardDialect
[THYMELEAF] * Prefix: "th"
[THYMELEAF] TEMPLATE ENGINE CONFIGURED OK
2014-01-09 15:58:42.951 INFO 5352 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine : [THYMELEAF] TEMPLATE ENGINE INITIALIZED
2014-01-09 15:58:42.955 ERROR 5352 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-1] Exception processing template "form": Error resolving template "form", template might not exist or might not be accessible by any of the configured Template Resolvers
2014-01-09 15:58:42.963 ERROR 5352 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "form", template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause

org.thymeleaf.exceptions.TemplateInputException: Error resolving template "form", template might not exist or might not be accessible by any of the configured Template Resolvers
at org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:248)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1193)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1149)
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1096)
at org.thymeleaf.spring3.view.ThymeleafView.renderFragment(ThymeleafView.java:259)
at org.thymeleaf.spring3.view.ThymeleafView.render(ThymeleafView.java:179)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1227)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1014)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:878)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:946)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:822)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:680)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1686)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)

2014-01-09 15:58:51.604 INFO 5352 --- [ Thread-2] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@56fe8d80: startup date [Thu Jan 09 15:58:21 CET 2014]; root of context hierarchy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.