Getting Started 17 - First Spring MVC Web Program
Before performing this program, please complete the introduction 04 - the first Spring program. Our first Spring MVC web program will use Tomcat 5.0.28 to demonstrate, we create a springapp directory in the webapps directory, this time we use Spring.jar directly, and its dependence commons-logging.jar, Please put these two JARs under SpringApp / Web-INF / LIB. The center of the Spring MVC frame is Dispatcher: org.springframework.web.servlet.dispatcherServlet. DispatcherServlets are responsible for defining the Web Request Assignment (Dispatch) to Handler, Spring defines the preset interface for Handler: org.springframework.web.servlet.mvc.controller:
Controller.java
Public interface controller {
Public ModilandView HandleRequest (httpservletRequest Req, httpservletResponse res).
}
DispatcherServlet dispatch request according to the object delegate is implemented org.springframework.web.servlet.HandlerMapping interface to handle, for example, the mapping between org.springframework.web.servlet.handler.SimpleUrlHandlerMapping, request handler is written in the definition Bean File. The DispatcherServlet itself is a servlet, we must first define in Web.xml:
Web.xml
Xml Version = "1.0" encoding = "ISO-8859-1"?>
XMLns: xsi = "http://www.w3.org/2001/xmlschema-instance" XSI: schemAlocation = "http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" Version = "2.4"> Spring App Examples. description> servlet> servlet-maping> web-app> In Web.xml, we define an instance hello of DispatcherServlet, all requests that end up * .do will be handled by it, and the DispatcherServlet preset will use the servlet's name as a preset, read Name-servlet.xml as its bean Define the file, read Hello-servlet.xml with the above settings. According to this mechanism, if you want multiple modules, you can define different names to use multiple DISPATCHERSERVLETs, and read different bean definition files separately. You can also define the name of the bean definition file, like: init-param> servlet> We use the preset hello-servlet.xml as the name of the arch, which is as follows: Hello-servlet.xml XML Version = "1.0" encoding = "UTF-8"?> Property> bean> Property> bean> beans> DispatCherServlets will request a mapping of Handler to Handlermapping's actual org.springframework.web.servlet.view.internalResourceViewResolver, in the above settings, we hand over /Hellouser.do to the name HELLOUSERACTION Handler, it is a On the category of the Controller interface, let's take a look at it. Let's take a look at ViewResolver, Spring allows you to use different representation layer technology, through ViewResolver conversion, your representation can use pure JSP / Servlet, JSTL, Velocity, Tiles, etc., we use JSP here. / Servlet, you only need to set the viewclass property for org.springframework.web.servlet.view.internalResourceView. If your representation uses JSTL, you can set org.springframework.web.servlet.view.jstlView, the same, for Spring supports it represents layer technology, Spring provides a ViewClass to set. Take a look at Hellouseraction, it works on the Controller interface: Hellouseraction.java Package online. Import java.io.ioException; Import java.util. *; Import javax.servlet. *; Import javax.servlet.http. *; Import Org.SpringFramework.Web.Servlet.mvc.controller; Import org.springframework.Web.Servlet.ModelandView; Import org.springframework.Web.Bind.RequestUtils; Public class hellouseraction imports controller { Private string helloword; PRIVATE STRING ViewPage; Public ModilandView HandleRequest (httpservletRequest Req, httpservletResponse res) Throws servletexception, ioException { String User = RequestUtils.getRequiredStringParameter (Req, "User"); Map model = new hashmap (); Model.Put ("HelloWord", GetHelloword ()); Model.Put ("User", User; Return New ModelandView (GetViewPage (), Model; } Public void setViewPage (String ViewPage) { THIS.VIEWPAGE = viewpage; } Public string getViewPage () {Return ViewPage; } Public void sethelloword (string helloword) { THIS.HELLOWORD = HelloWord; } Public string getHelloword () { Return HelloWord; } } HandlerRequest () acts in MVC / Model2, processing request content, calling business objects, preparing MODEL, it must return an instance of ModelandView, indicating that the representation layer resource to be viewed to the user. In the above example, we just remove the User parameters in the request, fill in the model, ModelandView accepts a MAP object as a request, and the viewResolver will convert the data source that can be extracted according to the set viewclass. . In the above example, we use the dependent implantable way to set helloword, and the address of the View, use the dependency injection method, we can avoid writing the View's resource address in the program, and please review the ViewPage property, We set it as /Web-inf/jsp/Hellouser.jsp, set the resource to web-infers, avoid users directly accessing resources to get higher security and resource access control Hellouser.jsp The content is as follows, using the JSP 2.0 Expression Language to remove the model to display on the page: Hellouser.jsp
body>
html>
Now you can start your servlet container, enter your local test address in the URL:
Http: // localhost: 8080 / SpringApp / Hellouser.do? user = justin
We give a request parameter user = justin, the result of the program execution is as follows:
body>
html>