一個簡單的Springmvc應用開發例子


        SpringMVC應用的配置步驟:
        1,將所有的jar包導入到lib文件夾下;
            jar在spring框架包-->libs-->所有的RELEASEjar包;
        2,先配置一個DispatcherServlet前端控制器;
            這個控制器實質上是一個web.xml文件,在里面配置內容包括
   
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
    http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    id="WebApp_ID" version="3.1">
  <servlet>
    <servlet-name>SpringMVCTest1</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/springmvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpringMVCTest1</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

  

        3,配置完前端控制器之后,接下來的步驟看你是打算用xml文件配置,還是用注解的方式了,在Spring2.5之后,都是推行:約定優於配置;
        先講xml配置文件的方法:
        其實,不管是哪一個,你都需要一個配置文件:springmvc-config.xml,在xml配置文件方法中,你需要在這個配置文件中配置handle,映射/hello請求;其實通俗地講就是要給你等一下輸網址的時候的最后那個請求,配置好這個請求的映射關系,當接收到這個請求之后,系統知道要調用哪個Controller來處理;下面這個是xml配置文件中的配置內容
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean name = "/hello" class = "org.fkit.controller.HelloController"/>
    <bean class = "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <bean class = "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    <bean class = "org.spirngframework.web.serlvet.view.InternalResourceViewResolver"/>
</beans>

  


 
        實際上這個springmvc-config就相當於一個橋梁,連接起了前端的請求和后台要處理的Controller之間的聯系;
        4,那么接下來,我們就要正式開始寫controller了,也就是后台具體的業務邏輯;
            在前面的<bean name = "/hello" class = "org.fkit.controller.HelloController"/>中我們已經寫出了這個HelloController控制器的路徑了,記得要前后一致,不然這個”springmvc-config橋梁“就顯得毫無意義了;
            其中,用xml配置方法和注解方法也是有所不同的,xml配置方法主要是使用接口的方式,代碼如下;
 
package org.fkit.controller;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
 
public class HelloController implements Controller{
    private static final Log logger = LogFactory.getLog(HelloController.class);
    @Override
    public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response){
        logger.info("handleRequest被調用");
        ModelAndView mv = new ModelAndView();
        //添加模型數據,可以是任意的POJO對象
        mv.addObject("message","Hello World");
        //設置邏輯視圖名,視圖解析器會根據該名字解析到具體的視圖頁面
        mv.setViewName("/WEB-INF/content/welcome.jsp");
        //返回ModelAndView對象
        return mv;
    }
}

  

        5,這個Controller控制器在接受到請求之后,做了相關處理之后,要將數據返回到視圖中,使用了SpringMVC專有的ModelAndView數據傳輸模型,所以接下來,我們還要建一個jsp頁面來接收Controller發送過來的模型數據。並用顯示邏輯顯示出來;
            這里要提一下,所有的jsp頁面都是放在WEB-INF/content目錄下,這樣做可以避免用戶直接訪問jsp頁面。做到SpringMVC的非侵入性;下面是welcome.jsp的代碼;
 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    ${requestScope.message}
</body>
</html>

  

 
              這里還用到了一點EL表達式的內容,關於EL表達式無法在jsp頁面中正常使用的問題,請自行百度喲。。。
        6,測試應用;
              做了這么多,嗶嗶了這么多,當然要測試一下來看看對不對啦。。
              輸入網址: http://localhost:8080/SpringMVCTest/hello 即可,注意到這里更以前不同的地方在於不需要寫.jsp文件后綴了。因為這只是一個請求而已;  
         好的,以上就是xml配置文件方法的SpringMVC應用的開發步驟;下面要講的是通過注解的方式來開發的步驟;
         這里要提一點,其實這兩種不同的方式也是Spring的一大特色,而SpringMVC也是Spring的一部分;所以個人建議在學習SpringMVC之前可以先去學學Spring,當然了,Spring作為一個經老不衰的框架,所接觸的只是皮毛而已;個人而言;
         跟xml配置方法相比,需要改動的步驟有兩個部分,一個是橋梁spingmvc-config,另一個是Controller控制器;其他的步驟都是一樣的;
         springmvc-config.xml文件的改動,我們現在已經不再是通過xml配置的方式來尋找Controller了,而是通過掃描的方式來尋找Controller, 如果說xml配置的方式,相當於你跟路人甲問路,然后路人甲告訴你:哦,那里啊,你要這么走, 那么走,然后你就照着他說的那么走了,而注解的方式就相當於,你直接說地方叫什么名字,然后高德地圖自動掃描某一塊區域,然后直接告訴你在哪兒;下面是代碼;
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package = "org.fkit.controller"/>
    <bean class = "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <bean class = "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
    <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver"/>
 
 
</beans>

  

 
 
        少了一個<bean name = "/hello" class = "org.fkit.controller.HelloController"/>,而多了一個路徑掃描,而且引進了另外兩個依賴約束mvc和context,看上去好像更麻煩了,但是從軟件工程化的角度來看,這樣更加靈活便利;因為你不用再每寫一個控制器就來這邊寫一個xml配置路徑了;
        接下來是Controller控制器的改變了, 我們要通過注解方式給控制器注解一個辨識,這樣的話,才能讓springmvc-config掃描到;
        上代碼;
package org.fkit.controller;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
 
@Controller
public class HelloController{
    private static final Log logger = LogFactory.getLog(HelloController.class);
    @RequestMapping("/hello")
    public ModelAndView hello(){
        logger.info("hello方法被調用");
        ModelAndView mv = new ModelAndView();
        mv.addObject("message","Hello World");
        mv.setViewName("/WEB-INF/content/welcome.jsp");
        return mv;
    }
}

  

        其中,@Controller是標注在這個Controller類里面,證明他是個Controller,然后springmvc-config會進來掃描這里面是否有@RequestMapping("***")標識,如果有的話,又是屬於哪一個的,這樣一直不停的尋找。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM