<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] ## 步驟 1 : 先運行,看到效果,再學習 先將完整的 tmall_ssm 項目(向老師要相關資料),配置運行起來,確認可用之后,再學習做了哪些步驟以達到這樣的效果。 ## 步驟 2 : 模仿和排錯 在確保可運行項目能夠正確無誤地運行之后,再嚴格照著教程的步驟,對代碼模仿一遍。 模仿過程難免代碼有出入,導致無法得到期望的運行結果,此時此刻通過比較**正確答案** ( 可運行項目 ) 和自己的代碼,來定位問題所在。 采用這種方式,**學習有效果,排錯有效率**,可以較為明顯地提升學習速度,跨過學習路上的各個檻。 ## 步驟 3 : 搜索欄下的分類信息 以前在非主頁的搜索欄下面是空的,現在能夠正確顯示分類信息了 ![](https://box.kancloud.cn/796ed8a65f82a542567821ceeafb169a_497x94.png) ## 步驟 4 : 左上角變形金剛圖片的超鏈位置 這個部位以前是href="“,只會停留在當前位置,現在會跳到首頁去了 ![](https://box.kancloud.cn/8144573ca174e979e8de144acef7bda0_508x80.png) ## 步驟 5 : 購物車數量顯示 以前是空白,現在可以正確顯示購物車中的數量了 ![](https://box.kancloud.cn/63bb2b3e0b83eb7d29df1f6d648ab916_174x49.png) ## 步驟 6 : OtherInterceptor 通過增加一個新的攔截器OtherInterceptor 來實現上述效果 ~~~ package com.dodoke.tmall.interceptor; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.dodoke.tmall.pojo.Category; import com.dodoke.tmall.pojo.OrderItem; import com.dodoke.tmall.pojo.User; import com.dodoke.tmall.service.CategoryService; import com.dodoke.tmall.service.OrderItemService; public class OtherInterceptor extends HandlerInterceptorAdapter { @Autowired CategoryService categoryService; @Autowired OrderItemService orderItemService; /** * 在業務處理器處理請求之前被調用 如果返回false 從當前的攔截器往回執行所有攔截器的afterCompletion(),再退出攔截器鏈 * 如果返回true 執行下一個攔截器,直到所有的攔截器都執行完畢 再執行被攔截的Controller 然后進入攔截器鏈, * 從最后一個攔截器往回執行所有的postHandle() 接著再從最后一個攔截器往回執行所有的afterCompletion() */ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; } /** * 在業務處理器處理請求執行完成后,生成視圖之前執行的動作 可在modelAndView中加入數據,比如當前時間 */ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { /* 這里是獲取分類集合信息,用于放在搜索欄下面 */ List<Category> cs = categoryService.list(); request.getSession().setAttribute("cs", cs); /* * 這里是獲取當前的contextPath:tmall_ssm,用與放在左上角那個變形金剛,點擊之后才能夠跳轉到首頁, * 否則點擊之后也僅僅停留在當前頁面 */ HttpSession session = request.getSession(); String contextPath = session.getServletContext().getContextPath(); request.getSession().setAttribute("contextPath", contextPath); /* 這里是獲取購物車中一共有多少數量 */ User user = (User) session.getAttribute("user"); int cartTotalItemNumber = 0; if (null != user) { List<OrderItem> ois = orderItemService.listByUser(user.getId()); for (OrderItem oi : ois) { cartTotalItemNumber += oi.getNumber(); } } request.getSession().setAttribute("cartTotalItemNumber", cartTotalItemNumber); } /** * 在DispatcherServlet完全處理完請求后被調用,可用于清理資源等 * * 當有攔截器拋出異常時,會從當前攔截器往回執行所有的攔截器的afterCompletion() */ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // System.out.println("afterCompletion(), 在訪問視圖之后被調用"); } } ~~~ ## 步驟 6 : springMVC.xml 在springMVC.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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!--啟動注解識別 --> <context:annotation-config /> <!-- 掃描Controller,并將其生命周期納入Spring管理 --> <context:component-scan base-package="com.dodoke.tmall.controller"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- 注解驅動,以使得訪問路徑與方法的匹配可以通過注解配置 --> <mvc:annotation-driven /> <!--開通靜態資源的訪問 --> <mvc:default-servlet-handler /> <!-- 視圖定位到/WEB/INF/jsp 這個目錄下 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- /WEB-INF/jsp/xxx.jsp --> <property name="suffix" value=".jsp" /> </bean> <!-- 對上傳文件的解析 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/fore*"/> <bean class="com.dodoke.tmall.interceptor.LoginInterceptor"/> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/fore*"/> <bean class="com.dodoke.tmall.interceptor.OtherInterceptor"/> </mvc:interceptor> </mvc:interceptors> </beans> ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看