{"id":1549,"date":"2016-10-03T18:29:46","date_gmt":"2016-10-03T16:29:46","guid":{"rendered":"http:\/\/blog.rabahi.net\/?page_id=1549"},"modified":"2017-05-11T11:58:28","modified_gmt":"2017-05-11T09:58:28","slug":"java-spring-quick-start","status":"publish","type":"page","link":"https:\/\/blog.rabahi.net\/?page_id=1549","title":{"rendered":"Java Spring &#8211; Quick start"},"content":{"rendered":"<div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">Contents<\/p><ul class=\"toc_list\"><li><a href=\"#Dependencies\"><span class=\"toc_number toc_depth_1\">1<\/span> Dependencies<\/a><\/li><li><a href=\"#Configuration\"><span class=\"toc_number toc_depth_1\">2<\/span> Configuration<\/a><ul><li><a href=\"#MainConfigjava\"><span class=\"toc_number toc_depth_2\">2.1<\/span> MainConfig.java<\/a><\/li><li><a href=\"#WebConfigjava\"><span class=\"toc_number toc_depth_2\">2.2<\/span> WebConfig.java<\/a><\/li><li><a href=\"#WebMvcConfigjava\"><span class=\"toc_number toc_depth_2\">2.3<\/span> WebMvcConfig.java<\/a><\/li><\/ul><\/li><li><a href=\"#Controller\"><span class=\"toc_number toc_depth_1\">3<\/span> Controller<\/a><\/li><li><a href=\"#JSP_view\"><span class=\"toc_number toc_depth_1\">4<\/span> JSP view<\/a><\/li><\/ul><\/div>\n<h1><span id=\"Dependencies\">Dependencies<\/span><\/h1>\n<p>If you use maven, add this to your pom.xml :<\/p>\n<pre lang=\"xml\">\r\n<!-- spring boot -->\r\n<dependency>\r\n    <groupId>org.springframework.boot<\/groupId>\r\n    <artifactId>spring-boot-starter-web<\/artifactId>\t\t    \r\n<\/dependency>\r\n\r\n<!-- jstl -->\r\n<dependency>\r\n  <groupId>javax.servlet<\/groupId>\r\n  <artifactId>jstl<\/artifactId>\r\n<\/dependency>\r\n<\/pre>\n<h1><span id=\"Configuration\">Configuration<\/span><\/h1>\n<h2><span id=\"MainConfigjava\">MainConfig.java<\/span><\/h2>\n<p>This file will tell spring what packages to scan:<\/p>\n<pre lang=\"java\">\r\n@Configuration\r\n@ComponentScan(basePackages = \"net.rabahi.spring\")\r\npublic class MainConfig {\r\n\t\r\n}\r\n<\/pre>\n<h2><span id=\"WebConfigjava\">WebConfig.java<\/span><\/h2>\n<p>This implementation replace the WEB-INF\/web.xml file.<\/p>\n<pre lang=\"java\">\r\npublic class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer {\r\n\r\n\t\/* (non-Javadoc)\r\n\t * @see org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer#getRootConfigClasses()\r\n\t *\/\r\n\t@Override\r\n\tprotected Class<?>[] getRootConfigClasses() {\r\n\t\treturn new Class<?>[] { MainConfig.class, WebMvcConfig.class};\r\n\t}\r\n\r\n\t\/* (non-Javadoc)\r\n\t * @see org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer#getServletConfigClasses()\r\n\t *\/\r\n\t@Override\r\n\tprotected Class<?>[] getServletConfigClasses() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t\/* (non-Javadoc)\r\n\t * @see org.springframework.web.servlet.support.AbstractDispatcherServletInitializer#getServletMappings()\r\n\t *\/\r\n\t@Override\r\n\tprotected String[] getServletMappings() {\r\n\t\treturn new String[] { \"\/\" };\r\n\t}\r\n\t\r\n\t\/* (non-Javadoc)\r\n\t * @see org.springframework.web.servlet.support.AbstractDispatcherServletInitializer#getServletFilters()\r\n\t *\/\r\n\t@Override\r\n    protected Filter[] getServletFilters() {\r\n\r\n        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();\r\n        characterEncodingFilter.setEncoding(\"UTF-8\");\r\n\r\n        return new Filter[] { characterEncodingFilter};\r\n    }\r\n\r\n}\r\n<\/pre>\n<h2><span id=\"WebMvcConfigjava\">WebMvcConfig.java<\/span><\/h2>\n<pre lang=\"java\">\r\n@Configuration\r\n@EnableWebMvc\r\npublic class WebMvcConfig extends WebMvcConfigurerAdapter {\r\n\t\r\n\r\n\t@Bean\r\n\tpublic ViewResolver viewResolver() {\r\n\t\tUrlBasedViewResolver viewResolver = new UrlBasedViewResolver();\r\n\t\tviewResolver.setViewClass(JstlView.class);\r\n\t\tviewResolver.setPrefix(\"\/WEB-INF\/jsp\/\");\r\n\t\tviewResolver.setSuffix(\".jsp\");\r\n\t\treturn viewResolver;\r\n\t}\t\r\n\r\n}\r\n<\/pre>\n<h1><span id=\"Controller\">Controller<\/span><\/h1>\n<p>When user request in the navbar &#8216;\/helloworld&#8217;, the following method is fired:<\/p>\n<pre lang=\"java\">\r\n@Controller\r\n@RequestMapping(\"\/\")\r\npublic class HelloWorldController {\r\n\r\n\t@RequestMapping(\"\/helloworld\")\r\n\tpublic ModelAndView helloworld() {\r\n\t\tString message = \"Hello world from spring controller !\";\r\n\t\treturn new ModelAndView(\"helloworld\", \"message\", message);\r\n\t}\r\n\t\r\n}\r\n<\/pre>\n<p>It will request WEB-INF\/jsp\/helloworld.jsp (as describes in the WebConfig.java implementation).<\/p>\n<h1><span id=\"JSP_view\">JSP view<\/span><\/h1>\n<p>To print the message &#8220;message&#8221;, we use ${message} in WEB-INF\/jsp\/helloworld.jsp :<\/p>\n<pre lang=\"html\">\r\nmessage : ${message}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Contents1 Dependencies2 Configuration2.1 MainConfig.java2.2 WebConfig.java2.3 WebMvcConfig.java3 Controller4 JSP view Dependencies If you use maven, add this to your pom.xml : org.springframework.boot spring-boot-starter-web javax.servlet jstl Configuration MainConfig.java This file will tell spring what packages to scan: @Configuration @ComponentScan(basePackages = &#8220;net.rabahi.spring&#8221;) public class MainConfig { } WebConfig.java This implementation replace the WEB-INF\/web.xml file. public class WebConfig extends [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1547,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1549","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1549"}],"version-history":[{"count":8,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1549\/revisions"}],"predecessor-version":[{"id":1978,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1549\/revisions\/1978"}],"up":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1547"}],"wp:attachment":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}