JavaWeb處理流程與基本jar包

weixin_34234823發表於2017-02-26

處理流程:
—>client發起請求
—>前端控制器(DispatcherServlet)接收
—>呼叫處理器對映器(HandlerMapping)根據xml或註解查詢對應的處理器(Handler)
—>處理器介面卡(HandlerAdapter)執行找到的Handler
—>處理器(Handler)執行完成後向處理器介面卡(HandlerAdapter)返回ModelAndView
—>前端控制器(View resolver)根據邏輯檢視名解析成真正的檢視,並把解析後的檢視View返回給前端控制器(DispatcherServlet)
—>前端控制器將模型資料填充到request域,並向使用者響應結果。

組成部分及搭建:

  • 前端控制器(DispatcherServlet): 用於接收請求,響應結果,相當於轉發器,中央處理器,減小向元件間的耦合度。
    —> 配置:在web.xml中配置

  • 處理器對映器(HandlerMapping): 用於根據請求的url查詢Handler

  • 處理器介面卡(HandlerAdapter): 用於執行Handler

  • 檢視解析器(View resolver): 根據邏輯檢視解析顧真正的檢視。

  • 檢視(View): jsp、pdf…

基本jar包:
log4j:
spring-aop:包含在應用中使用Spring 的AOP 特性時所需的類和原始碼級後設資料支援;
spring-aspects :提供對AspectJ的支援,以便可以方便的將面向方面的功能整合進IDE中
spring-beans :是所有應用都要用到的,它包含訪問配置檔案、建立和管理bean以及進行Inversion of Control / Dependency Injection(IoC/DI)操作相關的所有類。
spring-context : 為Spring 核心提供了大量擴充套件。可以找到使用Spring ApplicationContext特性時所需的全部類,JDNI 所需的全部類instrumentation元件以及校驗Validation 方面的相關類。外部依賴spring-beans, (spring-aop)。
spring-core:Spring 框架基本的核心工具類
spring-expression:支援表示式語言
spring-jdbc:包含對Spring 對JDBC 資料訪問進行封裝的所有類;
spring-orm:包含Spring對DAO特性集進行了擴充套件,使其支援 iBATIS、J
DO、OJB、TopLink,因為Hibernate已經獨立成包了,現在不包含在這個包裡了。
spring-tx:提供對事務的支援
spring-web:含Web 應用開發時,用到Spring 框架時所需的核心類,包括自動載入Web Application Context 特性的類、Struts 與JSF 整合類、檔案上傳的支援類、Filter 類和大量工具輔助類。
spring-webmvc:包含Spring MVC 框架相關的所有類。包括框架的Servlets,Web MVC框架,控制器和檢視支援。

開發過程:
1)在web.xml中配置前端控器DisPatcherServlet;

2)配置處理器介面卡:
—> 非註解:SimpleControllerHandlerAdapter/HttpRequestHandlerAdapter
—> 註解:AnnotationMethodHandlerAdapter/RequestMappingHandlerAdapter(3.1後)

3)配置處理器對映器:
—> 非註解:BeadNameUrlHandlerMapping/SimpleUrlHandlerMapping;
—> 註解:DefaultAnnotationHandlerMapping/RequestMappingHandlerMapping(3.1後)
【注意:一般用<mvc:annotion-driven>代替上面註解方式的配置。】

4)開發Handler,實現Controller介面(呼叫service操作mapper.xml增刪改查,填充到ModelAndView,並返回);
—> @Controller:註解式實現Handler介面;
—> @RequestMapping:url對映;窄化請求(根路徑+子路徑);限制http請求方法。(對映成功後,springMVC生成一個Handler物件,物件中只包括一個對映成功的method),包含的變數:
value:引數。處理器介面卡呼叫引數繫結元件(PropertyEditor(早期)/converter(後期))將客戶端的請求引數繫結到controller方法的形參上(不是在controler中定義成員變數接收) 。
①預設支援的型別:
HttpServletRequest;HttpServletResponse; HttpSession;Model/ModelMap
②簡單型別(整型/字串/日期):
—>將request傳入的引數名和controller方法形參名稱一致即可;
—>使用@RequestParam:@RequestParam(value=“id”, required=true)Integer id
【注意:若required=true,但沒有傳入該引數,會報400-Required xxx is not present錯誤】
③pojo,繫結:須將請求的引數名與pojo中的屬性名一致,形參新增pojo即可;
method:POST/GET
—> 返回值:
ModelAndView
** String:**
①邏輯檢視名(“items/editItems”);
②redirect重定向(“redirect:queryItems.action”);
③forward頁面轉發(“forward:queryItems.action”)
** void**:在controller方法形參上定義request/response,指定響應結果:
①使用request轉向頁面:request.getRequestDispatcher("頁面路徑").forward(request, response);
②通過response頁面重定向:response.sendRedirect(“url")
③ 通過response指定響應結果,例如響應json資料:

response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json串");

5)配置Handler(bean name=“/login.action” class=“…controller.loginController”)
【注意:可用

【注意:可用 <context:component-scan base-package=“..controller”/> 來代替】
6)配置檢視解析器 InternalResourceViewResolver ;

整合Mybatis :
1)配置檔案:配置別名、快取等
2) spring-dao.xml :載入配置檔案( context:property-placeholder location=“classpath:**.properties ”)、資料來源( datasource )、 sqlSessionFactory 、 mapper掃描器
3)編寫 mapper.xml
4)整合 service :
—> 定義service介面
—> 配置service: <bean id=“itemService” class=“**.impl.ItemServiceImpl”>
【注意: 若使用 <context:component-scan> 註解方式,不用再配置xml 】
—> 配置事務控制方法:事務管理器( transactionMananger )、通知( <tx:advice id=“advice” transaction-manager=“manager” )、aop( <aop:config><aop:advisor advice-ref=“advice”> pointcut=“..impl.(..)” )

部落格地址:JavaWeb處理流程與基本jar包

相關文章