<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    I want to fly higher
    programming Explorer
    posts - 114,comments - 263,trackbacks - 0
        因?yàn)樽?/span>webgame gm服務(wù)器,整體采用的是spring mvc架構(gòu),所以簡單入門學(xué)習(xí)一下:

    1.spring mvc基本流程
         從URL接受請求及數(shù)據(jù)->DispacherServlet->根據(jù)請求調(diào)用具體的Controller->Controller->調(diào)用service方法處理數(shù)據(jù)->通過DAO訪問
     db->增刪改查->db->返回操作結(jié)果集->service->處理返回結(jié)果->Controller->返回具體頁面和數(shù)據(jù)->jsp頁面
    2.spring mvc注解
     @Controller,@Service,@Repository
         @Controllers聲明控制層。@Service聲明服務(wù)層。@Repository聲明持久層(數(shù)據(jù)傳輸層DAO)
         @RequestMapping把一個POJO聲明為Spring里的Controller.如果不聲明要寫Controller類就要從Spring的Controller類繼承,并重寫handleRequest方法。
         @RequestMapping(value="*.htm",method=RequestMethod.GET);屬性value聲明Controller處理的請求,method聲明處理請求的類型。可聲明在類頭上,也可聲明在方法頭上。
         @RequestParam綁定參數(shù)與請求參數(shù);例:public String Controller(@RequestParam("id") int topicId,User user)把參數(shù) topicld與請求的參數(shù)“id”綁定,id的值傳入topicld。
         @AutoWired根據(jù)類型自動裝配,可放在屬性上,set方法上,構(gòu)造方法上。與@AutoWierd配套使用的是@Qualifier。按名字自動裝配。
         @Resource與@AutoWired類似
    3.DispatcherServlet-org.springframework.web.servlet.Dispatc-herServlet
     負(fù)責(zé)將請求分配給控制對象,所以使用Spring MVC的第一步是在web.xml中定義DispatcherServlet;

     1<servlet>
     2       <servlet-name>hello</servlet-name>
     3       <servlet-class>
     4    org.springframework.web.servlet.DispatcherServlet
     5  </servlet-class>
     6  <init-param>
     7     <param-name>contextConfigLocation</param-name>
     8                <param-value>
     9    /WEB-INF/mvc-config.xml,
    10    /WEB-INF/spring-config.xml
    11  <param-value>
    12                <init-param>
    13        </servlet>
    14


              .....
      可以加上contextConfigLocation的初始參數(shù),用來設(shè)置Bean定義文件的位置和名稱,默認(rèn)使用“Servlet名-servlet.xml";可以加上多個bean文件的來源;如果一個都沒加則找默認(rèn)的;hello-servlet.xml

      spring-servlet.xml-

    1<context:component-scan base-package="cn.spring.demo" />
    2 <bean
    3 class="org.springframework.web.servlet.view.InternalResourceView-Resolver"
    4 p:prefix="" p:suffix=".jsp" />


      base-package為注入bean時要spring要查找的包;
      Controller回傳ModleAndView,DispatcherServlet會交給ViewResolver解析。如:回傳一個字符串“index”,解析后找到/WEB-INF/index.jsp
    4.Controller-

     1@Controller//將類聲明為Spring容器里的Bean,Spring調(diào)用時實(shí)例化
     2    @RequestMapping("index.htm")//聲明這個Controller處理的請求是什么
     3    public class IndexController 
     4    {
     5     @RequestMapping(method = RequestMethod.GET)
     6     public String doGet() 
     7     {
     8      return "index";
     9     }

    10    }


    返回“index”,交由ViewResolver解析,返回調(diào)用“/WEB-INF/index.jsp”

        

    1//處理post請求的Controller
    2    @Controller
    3    @RequestMapping(value="index.htm",method = RequestMethod.POST)
    4    public String doPost(String username, String password, ModelMap modelMap) throws Exception 
    5    {
    6     modelMap.addAttribute("name",username);
    7     return "index";
    8    }


    把username以名值對的形式放入ModelMap,在index.jsp中用request對象接收;ModleMap,Spring提供的集合可以傳遞數(shù)據(jù)到返回的jsp頁面
    http://www.ibm.com/developerworks/cn/java/j-lo-spring25-mvc/

     以上為基于注解驅(qū)動的mvc

    5.DispacherServlet-HandlerMapping-ModleAndView-Controller-ViewResolver-View
     1.web.xml指定DispacherServelet和servlet的xml
      web.xml-

     1 <servlet>
     2    <servlet-name>buzzwords</servlet-name>
     3    <servlet-class>
     4       org.springframework.web.servlet.DispatcherServlet
     5    </servlet-class>
     6   <load-on-startup>1</load-on-startup>
     7   </servlet>
     8    
     9  <context-param>
    10   <param-name>contextConfigLocation</param-name>
    11   <param-value>/WEB-INF/buzzwords-service.xml</param-value>
    12   </context-param> 
    13


         <load-on-startup>標(biāo)記容器是否在啟動的時候就加載這個servlet,數(shù)字越小,當(dāng)是一個負(fù)數(shù)時或者沒有指定時,則指示容器在該servlet被選擇時才加載;正數(shù)的值越小,啟動該servlet的優(yōu)先級越高
     2.BuzzwordsController-不用@Controllers則需要實(shí)現(xiàn)Controller接口

     1public class BuzzwordsController implements Controller
     2  {
     3   private BuzzwordService facade;    
     4   public void setFacade(BuzzwordService facade) 
     5   {        
     6     this.facade = facade;
     7   }
        
     8   public ModelAndView handleRequest(HttpServletRequest request,  HttpServletResponse response) throws Exception
     9   {        
    10    return new ModelAndView("buzzwords""buzzwordService", facade);    
    11   }

    12  }

    13


       3.buzzwords-servlet.xml-指定servlet controller和urlmapping的映射關(guān)系

     1<bean id="buzzwordsController“ 
     2   class="BuzzwordsController">
     3    <property name="facade"><ref bean="buzzwordService"/></property>
     4  </bean>
     5
     6  <bean id="urlMapping" class="SimpleUrlHandlerMapping">
     7   <property name="mappings">
     8    <props>
     9    <prop key="/buzzwords.htm">
    10     buzzwordsController
    11    </prop>
    12
    13


       4.指定viewResolver

    1 <bean id="viewResolver" class="org.springframeworkInternalResourceViewResolver">
    2    <property name="viewClass">
    3   <value>org.springframework View</value>
    4   </property>
    5    <property name="prefix"><value>/WEB-INF/jsp/</value></property>
    6     <property name="suffix"><value>.jsp</value></property>
    7  </bean>


     5.buzzwords.jsp
    6.參考 \spring mvc\Spring MVC 詳解.ppt
      \spring mvc\Spring MVC 技術(shù)交流.ppt
         1. DispatchServlet在Web容器初始化的時候完成初始化——initStrategy() 
         2.ViewResolver-從一個String邏輯視圖名映射到一個視圖對象;對JSP用戶, 通常實(shí)現(xiàn) InternalResourceViewResolver
         3.Controller負(fù)責(zé)接收從DispatchServlet轉(zhuǎn)發(fā)的URL請求

         開發(fā)一個Spring MVC程序的基本步驟:
         1編寫處理請求邏輯的處理器-controller;
         2在DispatcherServlet上下文對應(yīng)的Spring配置文件中配置處理器;
         3配置一個視圖解析器,對處理器返回的ModelAndView進(jìn)行解析;
         4編寫一個視圖對象(jsp或ftl等),將響應(yīng)展現(xiàn)給客戶

     Controller
         -AbstractController
              -MultiActionController 將多個請求行為合并在一個控制器里
              -BaseCommandController
                    -AbstractCommandController 能將請求參數(shù)綁定到命令對象
                    -AbstractFormController 支持表單提交的抽象控制器類
                           -SimpleFormController 簡單表單處理控制器
                           -AbstractWizardFormController 向?qū)捅韱翁幚砜刂破?/span>

         ViewResolver接口:Controller傳回ModelAndView對象,DispatcherServlet將其交由ViewResolver來作View層的相關(guān)解析。要在Spring MVC配置文件中定義一個ViewResolver實(shí)例

         ModelAndView-Mode1AndView 類代表了 Spring Web MVC 程序中,呈現(xiàn)畫面時所使用 Model 數(shù)據(jù)對象與 View 數(shù)據(jù)對象,由于 Java  程序的方法中一次只能回傳一個對象,所以 Modelview 的作用是封裝這兩個對象,方便您同時返回 Model 與 View SimpleUrlHandlerMapping-最常用的處理器映射,將請求的URLs 影射到handlers;由一系列的分別代表URLs 和bean 的名字的name/value 對來定義影射;在x-servlet.xml中定義

    7. 參考\spring mvc\Spring_Web_MVC_架構(gòu).ppt
     1.web.xml:

     1 <servlet>
     2  <servlet-name>dispatcherServlet</servlet-name>
     3  <servlet-class>
     4      org.springframework.web.servlet.DispatcherServlet
     5  </servlet-class>
     6  <init-param>
     7      <param-name>contextConfigLocation</param-name>
     8      <param-value>/WEB-INF/mvc-config.xml</param-value>
     9  </init-param>        
    10  <load-on-startup>1</load-on-startup>
    11     </servlet>
    12
    13     <servlet-mapping>
    14  <servlet-name>dispatcherServlet</servlet-name>
    15  <url-pattern>*.do</url-pattern>
    16     </servlet-mapping>
    17

     

         可以在 XML 文件中設(shè)定 Controller 請求處理完畢之后,所要呈現(xiàn)數(shù)據(jù)的網(wǎng)頁路徑,見mvc -config . xml

        2.controller:
      

     1public class HelloController implements Controller
     2  {
     3     private String viewPage;    
     4     public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res)  throws Exception 
     5     {
     6  String user = req.getParameter("user");
     7  //viewPage與mvc-config.xml中的<property name="viewPage">對應(yīng),<value>對應(yīng)返回的jsp頁面
     8  return new ModelAndView(viewPage, "user", user);
     9     }
        
    10     public void setViewPage(String viewPage) 
    11     {
    12  this.viewPage = viewPage;
    13     }

    14 }


       3.mvc-config.xml:

     1<beans>   
     2     <bean id="viewResolver"
     3    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     4  <property name="prefix">
     5      <value>/WEB-INF/jsp/</value>
     6  </property>
     7  <property name="suffix">
     8      <value>.jsp</value>
     9  </property>
    10     </bean>
    11     
    12     <bean name="/hello.do" 
    13    class="onlyfun.caterpillar.HelloController"> 
    14  <property name="viewPage"> 
    15      <value>hello</value> 
    16  </property> 
    17     </bean>
    18 </beans>
    19


            DisPatcherServlet 必須根據(jù)一個 HandlerMaPping 對象,決定請求由哪一個 Controller 來處理, DispatcherServlet 默認(rèn)使用 org.spring-
     framwork .web.servlet.handler . BeanNameUrlHandlerMapping ,也就是根據(jù) Bean 在定義時的”name”屬性及使用者請求的 URL ,決定使 用哪一個 controller 實(shí)例,例如在這個例子中,請求 / FirstSpringMVC / hello.do 時, DispatcherServlet 根據(jù)” hello.do ”名稱,決定要 使用 “name”為”hello.do”的 Bean 實(shí)例,所以就是將請求交由 HelloController 的實(shí)例來處理。

         在 controller 返回 ModelAndView 后, Dispatcherservlet 會交由 ViewResolver 對象來作 View 層的相關(guān)解析,因而您需要設(shè)置一個 ViewResolver 實(shí)例,在這個范例中將以 JSP 作為 View 層技術(shù)-InternalResourceViewResolver如果想要在自己所定義的 servlet 類中使用 spring 的容器功能,則也可以使用org·springframework·web·context·ContextLoaderListener contextLoaderListener 默認(rèn)會讀取 applicationContext.xml,您可以指定自己的定義文件,只要在
    <context-param>中指定”contextConfigLocation”參數(shù);

     WebApplicationContext 實(shí)現(xiàn)了 ApplicationContext 接口,是 Spring 專為 Servlet 的 Web 應(yīng)用程序設(shè)計(jì)的ApplicationContext 實(shí)現(xiàn)類,在取得 WebApplicationContext 之后,可以利用它來取得 Bean 定義文件中定義的 Bean 實(shí)例;
         即web.xml中-

     1<context-param>
     2    <param-name>contextConfigLocation</param-name>
     3    <param-value>/WEB-INF/beans-config.xml</param-value>
     4   </context-param>      
     5    <listener>
     6    <listener-class>
     7     org.springframework.web.context.ContextLoaderListener
     8   </listener-class>
     9   </listener>
    10  beans-config.xml-
    11   <?xml version="1.0" encoding="UTF-8"?>
    12   <!DOCTYPE beans PUBLIC 
    13    "-//SPRING/DTD BEAN/EN" 
    14    "http://www.springframework.org/dtd/spring-beans.dtd"> 
    15
    16   <beans>   
    17     <bean id="dateBean" class="java.util.Date" singleton="false"/>
    18   </beans>
    19
    20


            4.MultiActionController -如果為每一個請求編寫一個 Controller 類,在程序規(guī)模增大時,您的 Controller 類將會迅速增加,可以繼承 或直接使用MultiActionController類,將數(shù)個相關(guān)的請求處理集中于同一個對象,而不用每一個請求編寫一個控制對象。
         使用MultiActionController,您要配合一個 MethodNameResolver 的實(shí)例, MultiActioncontroller 默認(rèn)使用的 MethodNameResolver 類是
     org . springframework . web . servlet . mvc . multiaction . InternalPathMethodNameResolver ,這個類可以根據(jù)所給的網(wǎng)址中,最后請求的
     文件名稱來判斷執(zhí)行 Controller中的哪一個方法,例如/test . do 的請求會執(zhí)行 test ( HttpservletRequest , HttpservletResponse )方法
     。但通常不會使用 InternalPathMethodNameResolver ,因?yàn)檫@就失去了使用 MultiActionController 的一些優(yōu)點(diǎn),像是依使用者的請求
     參數(shù)來決定所要執(zhí)行的方法。
      改用->ParameterMethodNameResolver
      mvc-config.xml-

     1 <bean id="paraMethodResolver"           
     2    class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> 
     3    <property name="paramName">
     4     <value>action</value>
     5    </property> 
     6    <property name="defaultMethodName">
     7     <value>list</value>
     8    </property> 
     9    </bean> 
    10
    11   <bean id="bookController" class="onlyfun.caterpillar.BookController"> 
    12   <property name="methodNameResolver">  <ref bean="paraMethodResolver"/>  </property> 
    13

     

      也可以將所有相對應(yīng)的方法專門組織在一個委托(delegate)物件中,而不是撰寫在 Controller 類別中,當(dāng)請求來到時,將
      委托給這個物件來執(zhí) 行指定的方法,您只要設(shè)定 MultiActionController 的"delegate"屬性參考至委托物件即可

      或者->PropertiesMethodNameResolver

    1<bean id="propMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
    2   <property name="mappings">
    3    <props>
    4     <prop key="/listbook.do">list</prop>
    5     <prop key="/addbook.do">add</prop>
    6     <prop key="/deletebook.do">delete</prop>
    7    </props>
    8   </property>
    9  </bean>
    posted on 2011-12-26 22:53 landon 閱讀(3115) 評論(1)  編輯  收藏 所屬分類: Program

    FeedBack:
    # re: Spring MVC入門學(xué)習(xí)
    2014-05-25 21:26 | zuidaima
    主站蜘蛛池模板: 毛片在线看免费版| 亚洲网站在线免费观看| AV无码免费永久在线观看| 又黄又爽的视频免费看| 亚洲精品国产精品乱码不99| 亚洲精品人成网在线播放影院| rh男男车车的车车免费网站| 国产桃色在线成免费视频| 亚洲午夜福利精品无码| 亚洲一区中文字幕| 国产裸体美女永久免费无遮挡| 97热久久免费频精品99| 精品亚洲一区二区三区在线播放| 亚洲AV无码专区在线亚| 精品97国产免费人成视频| 成年女人午夜毛片免费视频| 国产成人亚洲综合色影视| 亚洲成av人无码亚洲成av人| 免费国产污网站在线观看15| 免费人成在线观看网站视频| 亚洲小视频在线播放| 久久高潮一级毛片免费| 天天看免费高清影视| 亚洲日本一区二区三区| 色噜噜狠狠色综合免费视频| 精品国产免费人成电影在线观看| 国产精品亚洲mnbav网站 | 免费无码成人AV在线播放不卡| 国产人成免费视频| 亚洲中文无码线在线观看| 中文字幕无线码中文字幕免费| 免费无码又爽又刺激高潮| 91在线精品亚洲一区二区| jizz免费观看视频| 国产精品国产自线拍免费软件| 亚洲综合无码一区二区三区| a级毛片免费在线观看| 免费又黄又爽的视频| 亚洲色偷偷偷综合网| 最近高清中文字幕无吗免费看| 亚洲成色WWW久久网站|