{"id":21203144,"url":"https://github.com/serenasensini/fzth-java-w-spring-mvc","last_synced_at":"2025-07-10T06:33:54.863Z","repository":{"id":37326714,"uuid":"159061330","full_name":"serenasensini/FZTH-Java-w-Spring-MVC","owner":"serenasensini","description":"From Zero to Hero #Java w/ Spring MVC","archived":false,"fork":false,"pushed_at":"2022-12-16T00:57:11.000Z","size":4035,"stargazers_count":1,"open_issues_count":7,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-03-04T19:28:17.158Z","etag":null,"topics":["java-application","java-spring","java-spring-boot","java-spring-framework","java-spring-mvc","java-spring-mvc-project","java-spring-web","java-springboot-application","maven","maven-framework"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/serenasensini.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-25T18:22:41.000Z","updated_at":"2022-07-21T19:22:17.000Z","dependencies_parsed_at":"2023-01-29T07:00:52.298Z","dependency_job_id":null,"html_url":"https://github.com/serenasensini/FZTH-Java-w-Spring-MVC","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serenasensini%2FFZTH-Java-w-Spring-MVC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serenasensini%2FFZTH-Java-w-Spring-MVC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serenasensini%2FFZTH-Java-w-Spring-MVC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serenasensini%2FFZTH-Java-w-Spring-MVC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/serenasensini","download_url":"https://codeload.github.com/serenasensini/FZTH-Java-w-Spring-MVC/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225624350,"owners_count":17498415,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java-application","java-spring","java-spring-boot","java-spring-framework","java-spring-mvc","java-spring-mvc-project","java-spring-web","java-springboot-application","maven","maven-framework"],"created_at":"2024-11-20T20:21:32.656Z","updated_at":"2024-11-20T20:21:33.890Z","avatar_url":"https://github.com/serenasensini.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Java: Spring + Maven\n\n## Cos'è: Spring\nSi tratta di un framework open source per lo sviluppo di applicazioni su piattaforma Java. A questo framework sono associati tanti altri progetti, che hanno nomi compositi come Spring Boot, Spring Data, Spring Batch, eccetera. Questi progetti sono stati ideati per fornire funzionalità aggiuntive al framework. (cfr. [Wikipedia](https://it.wikipedia.org/wiki/Spring_framework))\n\n## Cos'è: Spring MVC\nIn un'applicazione Web MVC di Spring MVC si hanno 3 componenti MVC:\n- Modelli: oggetti di dominio elaborati dal livello del servizio (business logic) o dal livello persistente (operazione del database).\n- Visualizzazioni: visualizza i dati, normalmente è una pagina JSP scritta con la libreria di tag standard Java (JSTL).\n- Controller: mappatura degli URL e interazione con il livello di servizio per l'elaborazione aziendale e la restituzione di un modello.\n\n## Come usarlo\n\nIl file web.xml è il file più importante: il nome della servlet dev'essere uguale al nome del file con suffisso \"servlet.xml\", quindi nel caso di esempio \"spring-servlet.xml\".\n\n\u003e Un/a servlet è un oggetto scritto in linguaggio Java che opera all'interno di un server web (es. Tomcat, Jetty) oppure un server per applicazioni (es. WildFly, GlassFish) permettendo la creazione di applicazione web.\n\n__web.xml__\n\n```\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cweb-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://java.sun.com/xml/ns/javaee\" xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\" version=\"2.5\"\u003e\n  \u003cservlet\u003e\n    \u003cservlet-name\u003espring\u003c/servlet-name\u003e\n    \u003cservlet-class\u003eorg.springframework.web.servlet.DispatcherServlet\u003c/servlet-class\u003e\n    \u003cload-on-startup\u003e1\u003c/load-on-startup\u003e\n  \u003c/servlet\u003e\n  \u003cservlet-mapping\u003e\n    \u003cservlet-name\u003espring\u003c/servlet-name\u003e\n    \u003curl-pattern\u003e/\u003c/url-pattern\u003e\n  \u003c/servlet-mapping\u003e\n  \u003cwelcome-file-list\u003e\n    \u003cwelcome-file\u003eindex.jsp\u003c/welcome-file\u003e\n  \u003c/welcome-file-list\u003e\n\u003c/web-app\u003e\n```\n\n__pom.xml__\n\n```\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cproject xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\"\u003e\n\t\u003cmodelVersion\u003e4.0.0\u003c/modelVersion\u003e\n\t\u003cgroupId\u003ecom.black\u003c/groupId\u003e\n\t\u003cartifactId\u003eproject\u003c/artifactId\u003e\n\t\u003cname\u003eBlackSpringProject\u003c/name\u003e\n\t\u003cpackaging\u003ewar\u003c/packaging\u003e\n\t\u003cversion\u003e1.0.0-BUILD-SNAPSHOT\u003c/version\u003e\n\t\u003cproperties\u003e\n\t\t\u003cjava-version\u003e1.6\u003c/java-version\u003e\n\t\t\u003corg.springframework-version\u003e3.1.1.RELEASE\u003c/org.springframework-version\u003e\n\t\t\u003corg.aspectj-version\u003e1.6.10\u003c/org.aspectj-version\u003e\n\t\t\u003corg.slf4j-version\u003e1.6.6\u003c/org.slf4j-version\u003e\n\t\u003c/properties\u003e\n\t\u003cdependencies\u003e\n\t\t\u003c!-- Spring --\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003eorg.springframework\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003espring-context\u003c/artifactId\u003e\n\t\t\t\u003cversion\u003e${org.springframework-version}\u003c/version\u003e\n\t\t\t\u003cexclusions\u003e\n\t\t\t\t\u003c!-- Exclude Commons Logging in favor of SLF4j --\u003e\n\t\t\t\t\u003cexclusion\u003e\n\t\t\t\t\t\u003cgroupId\u003ecommons-logging\u003c/groupId\u003e\n\t\t\t\t\t\u003cartifactId\u003ecommons-logging\u003c/artifactId\u003e\n\t\t\t\t \u003c/exclusion\u003e\n\t\t\t\u003c/exclusions\u003e\n\t\t\u003c/dependency\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003eorg.springframework\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003espring-webmvc\u003c/artifactId\u003e\n\t\t\t\u003cversion\u003e${org.springframework-version}\u003c/version\u003e\n\t\t\u003c/dependency\u003e\n\t\t\t\t\n\t\t\u003c!-- AspectJ --\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003eorg.aspectj\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003easpectjrt\u003c/artifactId\u003e\n\t\t\t\u003cversion\u003e${org.aspectj-version}\u003c/version\u003e\n\t\t\u003c/dependency\u003e\t\n\t\t\n\t\t\u003c!-- Logging --\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003eorg.slf4j\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003eslf4j-api\u003c/artifactId\u003e\n\t\t\t\u003cversion\u003e${org.slf4j-version}\u003c/version\u003e\n\t\t\u003c/dependency\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003eorg.slf4j\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003ejcl-over-slf4j\u003c/artifactId\u003e\n\t\t\t\u003cversion\u003e${org.slf4j-version}\u003c/version\u003e\n\t\t\t\u003cscope\u003eruntime\u003c/scope\u003e\n\t\t\u003c/dependency\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003eorg.slf4j\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003eslf4j-log4j12\u003c/artifactId\u003e\n\t\t\t\u003cversion\u003e${org.slf4j-version}\u003c/version\u003e\n\t\t\t\u003cscope\u003eruntime\u003c/scope\u003e\n\t\t\u003c/dependency\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003elog4j\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003elog4j\u003c/artifactId\u003e\n\t\t\t\u003cversion\u003e1.2.15\u003c/version\u003e\n\t\t\t\u003cexclusions\u003e\n\t\t\t\t\u003cexclusion\u003e\n\t\t\t\t\t\u003cgroupId\u003ejavax.mail\u003c/groupId\u003e\n\t\t\t\t\t\u003cartifactId\u003email\u003c/artifactId\u003e\n\t\t\t\t\u003c/exclusion\u003e\n\t\t\t\t\u003cexclusion\u003e\n\t\t\t\t\t\u003cgroupId\u003ejavax.jms\u003c/groupId\u003e\n\t\t\t\t\t\u003cartifactId\u003ejms\u003c/artifactId\u003e\n\t\t\t\t\u003c/exclusion\u003e\n\t\t\t\t\u003cexclusion\u003e\n\t\t\t\t\t\u003cgroupId\u003ecom.sun.jdmk\u003c/groupId\u003e\n\t\t\t\t\t\u003cartifactId\u003ejmxtools\u003c/artifactId\u003e\n\t\t\t\t\u003c/exclusion\u003e\n\t\t\t\t\u003cexclusion\u003e\n\t\t\t\t\t\u003cgroupId\u003ecom.sun.jmx\u003c/groupId\u003e\n\t\t\t\t\t\u003cartifactId\u003ejmxri\u003c/artifactId\u003e\n\t\t\t\t\u003c/exclusion\u003e\n\t\t\t\u003c/exclusions\u003e\n\t\t\t\u003cscope\u003eruntime\u003c/scope\u003e\n\t\t\u003c/dependency\u003e\n\n\t\t\u003c!-- @Inject --\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003ejavax.inject\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003ejavax.inject\u003c/artifactId\u003e\n\t\t\t\u003cversion\u003e1\u003c/version\u003e\n\t\t\u003c/dependency\u003e\n\t\t\t\t\n\t\t\u003c!-- Servlet --\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003ejavax.servlet\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003eservlet-api\u003c/artifactId\u003e\n\t\t\t\u003cversion\u003e2.5\u003c/version\u003e\n\t\t\t\u003cscope\u003eprovided\u003c/scope\u003e\n\t\t\u003c/dependency\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003ejavax.servlet.jsp\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003ejsp-api\u003c/artifactId\u003e\n\t\t\t\u003cversion\u003e2.1\u003c/version\u003e\n\t\t\t\u003cscope\u003eprovided\u003c/scope\u003e\n\t\t\u003c/dependency\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003ejavax.servlet\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003ejstl\u003c/artifactId\u003e\n\t\t\t\u003cversion\u003e1.2\u003c/version\u003e\n\t\t\u003c/dependency\u003e\n\t\n\t\t\u003c!-- Test --\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003ejunit\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003ejunit\u003c/artifactId\u003e\n\t\t\t\u003cversion\u003e4.7\u003c/version\u003e\n\t\t\t\u003cscope\u003etest\u003c/scope\u003e\n\t\t\u003c/dependency\u003e        \n\t\u003c/dependencies\u003e\n    \u003cbuild\u003e\n        \u003cplugins\u003e\n            \u003cplugin\u003e\n                \u003cartifactId\u003emaven-eclipse-plugin\u003c/artifactId\u003e\n                \u003cversion\u003e2.9\u003c/version\u003e\n                \u003cconfiguration\u003e\n                    \u003cadditionalProjectnatures\u003e\n                        \u003cprojectnature\u003eorg.springframework.ide.eclipse.core.springnature\u003c/projectnature\u003e\n                    \u003c/additionalProjectnatures\u003e\n                    \u003cadditionalBuildcommands\u003e\n                        \u003cbuildcommand\u003eorg.springframework.ide.eclipse.core.springbuilder\u003c/buildcommand\u003e\n                    \u003c/additionalBuildcommands\u003e\n                    \u003cdownloadSources\u003etrue\u003c/downloadSources\u003e\n                    \u003cdownloadJavadocs\u003etrue\u003c/downloadJavadocs\u003e\n                \u003c/configuration\u003e\n            \u003c/plugin\u003e\n            \u003cplugin\u003e\n                \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n                \u003cartifactId\u003emaven-compiler-plugin\u003c/artifactId\u003e\n                \u003cversion\u003e2.5.1\u003c/version\u003e\n                \u003cconfiguration\u003e\n                    \u003csource\u003e1.6\u003c/source\u003e\n                    \u003ctarget\u003e1.6\u003c/target\u003e\n                    \u003ccompilerArgument\u003e-Xlint:all\u003c/compilerArgument\u003e\n                    \u003cshowWarnings\u003etrue\u003c/showWarnings\u003e\n                    \u003cshowDeprecation\u003etrue\u003c/showDeprecation\u003e\n                \u003c/configuration\u003e\n            \u003c/plugin\u003e\n            \u003cplugin\u003e\n                \u003cgroupId\u003eorg.codehaus.mojo\u003c/groupId\u003e\n                \u003cartifactId\u003eexec-maven-plugin\u003c/artifactId\u003e\n                \u003cversion\u003e1.2.1\u003c/version\u003e\n                \u003cconfiguration\u003e\n                    \u003cmainClass\u003eorg.test.int1.Main\u003c/mainClass\u003e\n                \u003c/configuration\u003e\n            \u003c/plugin\u003e\n        \u003c/plugins\u003e\n    \u003c/build\u003e\n\u003c/project\u003e\n```\n\nNel file _spring-servlet.xml_ cambiare il base-package del componente e il prefisso dove il bean deve cercare le jsp.\n\n__spring-servlet.xml__\n\n```\n\u003c!-- beans declaration: where spring should take its definition; it has to be almost always like this --\u003e\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cbeans xmlns=\"http://www.springframework.org/schema/beans\"\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txmlns:context=\"http://www.springframework.org/schema/context\"\n\txsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\n\t\thttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd\"\u003e\n\n\n\u003ccontext:component-scan base-package=\"com.blank.project\"\u003e\u003c/context:component-scan\u003e\n\n\u003cbean class=\"org.springframework.web.servlet.view.UrlBasedViewResolver\"\u003e\n\t\u003cproperty name=\"viewClass\" value=\"org.springframework.web.servlet.view.JstlView\"\u003e\u003c/property\u003e\n\t\u003cproperty name=\"prefix\" value=\"/WEB-INF/jsp/\"\u003e\u003c/property\u003e\n\t\u003cproperty name=\"suffix\" value=\".jsp\"\u003e\u003c/property\u003e\n\u003c/bean\u003e\n\u003c/beans\u003e\n\n```\n\nI file Controller rispettano il pattern MVC: sono responsabili del controllo del flusso dell'esecuzione dell'applicazione. Quando si effettua una richiesta (significa richiesta di una pagina) all'applicazione MVC, un controllore è responsabile della restituzione della risposta a tale richiesta. Il controller può eseguire una o più azioni.\n\n__HomeController.java__\n\n```\npackage com.blank.project;\n\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\n\n\n@Controller\npublic class HomeController {\n\n\t// value= URI of the request\n\t@RequestMapping(value = \"/index\", method = RequestMethod.GET)\n\tpublic String home(Model view) {\n\n\t\t//View: we could add attributes to the view\n\t\tview.addAttribute(\"message\", \"hello world\" );\n\t\t//name of the jsp\n\t\treturn \"home\";\n\t}\n\t\n}\n\n```\n\nNel file \"home.jsp\" avremo la View della nostra request.\n\n__home.jsp__\n\n```\n\u003c%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\"%\u003e\n\u003chtml\u003e\n\u003cbody\u003e\n\t\u003ch1\u003eSpring MVC Hello World Example\u003c/h1\u003e\n\n\t\u003ch2\u003e${message}\u003c/h2\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n```\n\n## Link utili:\n- [Spring MVC 3 + Maven](https://www.mkyong.com/spring3/spring-3-mvc-hello-world-example-annotation/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserenasensini%2Ffzth-java-w-spring-mvc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserenasensini%2Ffzth-java-w-spring-mvc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserenasensini%2Ffzth-java-w-spring-mvc/lists"}