手把手教會你如何玩轉SpringMVC
一:SpringMVC處理流程
二:SpringMVC開發步驟
當然,首先都要記得導包哦!!!!!!!!
(1)SpringMVC中得前端配置器的配置
- <?xmlversion="1.0"encoding="UTF-8"?>
- <web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- <display-name>SpringMvc</display-name>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.htm</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- <welcome-file>default.html
- <welcome-file>default.htm</welcome-file>
- <welcome-file>default.jsp</welcome-file>
- </welcome-file-list>
- <!-- 前端配置器 -->
- <servlet>
- <servlet-name>springmvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet
- <!-- 預設找 /WEB-INF/[servlet的名稱]-servlet.xml -->
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:springmvc.xml</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>springmvc</servlet-name>
- <!--
- 1. /* 攔截所有 jsp js png .css 真的全攔截 建議不使用
- 2. *.action *.do 攔截以do action 結尾的請求 肯定能使用 ERP
- 3. / 攔截所有 (不包括jsp) (包含.js .png.css) 強烈建議使用 前臺 面向消費者 www.jd.com/search /對靜態資源放行
- -->
- <url-pattern>*.action</url-pattern>
- </servlet-mapping>
- </web-app>
(2)配置springmvc.xml
- <?xmlversion="1.0"encoding="UTF-8"?>
- <beansxmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"
- 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-4.0.xsd
- http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
- <!-- 掃描@Controler @Service-->
- <context:component-scanbase-package="hnu.scw"></context:component-scan>
- </beans>
(3)編寫Controler類,進行頁面控制
- package hnu.scw.controler;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.servlet.ModelAndView;
- @Controller
- public class SpringMvcControler {
- @RequestMapping(value="/test/study1.action")
- public ModelAndView testControler1(){
- ModelAndView modelAndView = new ModelAndView();
- modelAndView.setViewName("/WEB-INF/jsp/itemList.jsp");
- return modelAndView;
- }
- }
這上面的步驟就是一個基本的springmvc開發模式了。
三:SpringMVC架構分析圖
四:SpringMVC配置三大元件
- <!-- 處理器對映器 ,其實有三種這裡寫了一種,其實後面都被註解被替換,所以瞭解就好了,知道就行-->
- lt;!-- <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> -->
- <!-- 處理器介面卡 -->
- lt;!-- <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> -->
- <!-- 註解驅動 -->
- <mvc:annotation-driven/>
- <!-- 檢視直譯器 -->
- <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <propertyname="prefix"value="/WEB-INF/jsp/"/>
- <propertyname="suffix"value=".jsp"/>
- </bean>
PS:(1)如果不進行配置也可以,也可以,因為SpringMVC架構有預設配置,但是隻從3.1版之後,預設的就廢棄了,所以配置一下最好。
(2)如果配置了註解驅動,那麼處理器對映器和處理器介面卡就可以不用配置
(3)檢視直譯器主要是為了節省在Controler的頁面跳轉,將相同的程式碼進行省略。比如有很多個都是要跳轉到/WEB-INF/jsp/下面,那麼就可以將這個部分提取出來。
五:SpringMVC整合Mybatis
其實這個很簡單,如果看了我之前關於Mybatis文章的話,那麼就很明白了。
這裡所以我就不多說了,大體講解一下步驟。
(1)將spring與Mybatis整合-----------在我的Mybatis的乾貨知識文章有已經講解非常非常清楚了
(2)將SpringMVC整合到(1)中的框架中。--------------這個內容就是上面講解的整合方式了。
六:Controler層引數繫結
(1)原始引數繫結
- //去修改頁面 入參 id
- @RequestMapping(value = "/itemEdit.action")
- // public ModelAndView toEdit(@RequestParam(value = "id",required = false,defaultValue = "1") Integer idaaq,
- public ModelAndView toEdit(HttpServletRequest request,HttpServletResponse response
- ,HttpSession session,Model model){
- //Servlet時代開發
- String id = request.getParameter("id");
- //查詢一個商品
- Items items = itemService.selectItemsById(Integer.parseInt(id));
- ModelAndView mav = new ModelAndView();
- //資料
- mav.addObject("item", items);
- mav.setViewName("editItem");
- return mav;
- }
(2)繫結之簡單型別
- //去修改頁面 入參 id
- @RequestMapping(value = "/itemEdit.action")
- // public ModelAndView toEdit(@RequestParam(value = "id",required = false,defaultValue = "1") Integer idaaq,
- public ModelAndView toEdit(Integer id ){
- //查詢一個商品
- Items items = itemService.selectItemsById(id);
- ModelAndView mav = new ModelAndView();
- //資料
- mav.addObject("item", items);
- mav.setViewName("editItem");
- return mav;
- }
2)存在開發人員中,因為形參的名字和要接受的引數名字不一樣,比如傳過來的名字是id,但是形參又是設定為了idaao,所以這樣的情況又怎麼處理呢?其實也有處理的辦法,就是使用@RequestParm來進行處理。這個情況在上面這個例子也已經進行說明了,其中還有required這個屬性的意思就是,這個是否必須有。defaultValue屬性的含義就是設定一個預設值。
注:這個實際都不是這樣用,因為麻煩,花那麼大的功夫就是為了接受引數,而還不如直接將形參的名字改成和傳送的引數一樣,這不是多麼簡單的處理方式嘛。所以這種不建議使用哦。。。
(3)繫結之實體類物件JavaBean
- //提交修改頁面 入參 為 Items物件
- @RequestMapping(value = "/updateitem.action")
- public ModelAndView updateitem(Items items){
- //修改
- itemService.updateItemsById(vo.getItems());
- ModelAndView mav = new ModelAndView();
- mav.setViewName("success");
- return mav;
- }
PS:必須保證實體類物件中的屬性和傳送過來要接受的引數名一樣。。。。切記切記!!!!!!!!!!!!!!!
(4)繫結之包裝JavaBean類物件
- //提交修改頁面 入參 為 Items物件
- @RequestMapping(value = "/updateitem.action")
- public ModelAndView updateitem(QueryVo vo){
- //修改
- itemService.updateItemsById(vo.getItems());
- ModelAndView mav = new ModelAndView();
- mav.setViewName("success");
- return mav;
- }
- package com.itheima.springmvc.pojo;
- public class QueryVo {
- //商品
- private Items items;
- public Items getItems() {
- return items;
- }
- public void setItems(Items items) {
- this.items = items;
- }
- }
(5)繫結引數之陣列------適用於比如在頁面中的checkbox元件中
- //刪除多個
- @RequestMapping(value = "/deletes.action")
- public ModelAndView deletes(Integer[] ids){
- ModelAndView mav = new ModelAndView();
- mav.setViewName("success");
- return mav;
- }
(6)繫結引數之List集合-----------適用於一次性修改多個相同型別格式的資料,比如更新多個片段
包裝類程式碼:
- package com.itheima.springmvc.pojo;
- import java.util.List;
- public class QueryVo {
- private List<Items> itemsList;
- public List<Items> getItemsList() {
- return itemsList;
- }
- public void setItemsList(List<Items> itemsList) {
- this.itemsList = itemsList;
- }
- }
controller層程式碼:
- //修改
- @RequestMapping(value = "/updates.action",method = {RequestMethod.POST,RequestMethod.GET})
- public ModelAndView updates(QueryVo vo){
- ModelAndView mav = new ModelAndView();
- mav.setViewName("success");
- return mav;
- }
(2)只是注意一點,在用的時候,就需要設定itemlist的下標,即itemlist[0]........,如下所示
- <c:forEachitems="${itemList }"var="item"varStatus="s">
- <tr>
- <td><inputtype="checkbox"name="ids"value="${item.id }"></td>
- <td><inputtype="text"name="itemsList[${s.index}].name"value="${item.name }"></td>
- <td><inputtype="text"name="itemsList[${s.index }].price"value="${item.price }"></td>
- <td><fmt:formatDatevalue="${item.createtime}"pattern="yyyy-MM-dd HH:mm:ss"/></td>
- <td>${item.detail }</td>
- <td><ahref="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a></td>
- </tr>
- </c:forEach>
(7)自定義引數轉換
例子:1)在開發過程中,比如填寫時間的格式的時候,本來是2017-09-11,然而填寫成了2017:09:11,這樣的話,在本身為Date型別的話,這樣就會報錯,所以為了處理這樣的需求,就可以採取引數轉換處理方法。
2)或者碰到某些固定的元件只能產生某種格式,但是這種格式又無法滿足需求,這時候就可以通過引數轉換方法將需要改變的格式進行修改,達到符合需求的作用。
步驟:(1)編寫轉換方法----也就是想進行引數轉換的方式,即由什麼格式轉為什麼格式的方法,
下面就以由yyyy:MM-dd HH_mm-ss的格式轉為正常的Date的格式的方法
- package com.itheima.springmvc.conversion;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import org.springframework.core.convert.converter.Converter;
- /**
- * 轉換日期型別的資料
- * S : 頁面傳遞過來的型別
- * T : 轉換後的型別
- * @author lx
- *
- */
- public class DateConveter implements Converter<String, Date>{
- public Date convert(String source) {
- // TODO Auto-generated method stub
- try {
- if(null != source){//2016:11-05 11_43-50
- DateFormat df = new SimpleDateFormat("yyyy:MM-dd HH_mm-ss");
- return df.parse(source);
- }
- } catch (Exception e) {
- // TODO: handle exception
- }
- return null;
- }
- }
(2)配置spring.xml
- <!-- 註解驅動 -->
- <mvc:annotation-drivenconversion-service="conversionServiceFactoryBean"/>
- <!-- 配置Conveter轉換器 轉換工廠 (日期、去掉前後空格)。。 -->
- <beanid="conversionServiceFactoryBean"class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
- <!-- 配置 多個轉換器-->
- <propertyname="converters">
- <list>
- <beanclass="com.itheima.springmvc.conversion.DateConveter"/>
- </list>
- </property>
- </bean>
七:SpringMVC與Struts2的區別
1、 springmvc的入口是一個servlet即前端控制器,而struts2入口是一個filter過濾器。
2、 springmvc是基於方法開發(一個url對應一個方法),請求引數傳遞到方法的形參,可以設計為單例或多例(建議單例),struts2是基於類開發,傳遞引數是通過類的屬性,只能設計為多例。
3、 Struts採用值棧儲存請求和響應的資料,通過OGNL存取資料,springmvc通過引數解析器是將request請求內容解析,並給方法形參賦值,將資料和檢視封裝成ModelAndView物件,最後又將ModelAndView中的模型資料通過request域傳輸到頁面。Jsp檢視解析器預設使用jstl。
八:配置web.xml設定post提交的亂碼處理
- <!-- 處理POST提交亂碼問題 -->
- <filter>
- <filter-name>encoding</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>encoding</filter-name>
- <url-pattern>*.action</url-pattern>
- </filter-mapping>
九:@ResuletMapping的適用
(1) 限定GET方法
@RequestMapping(method = RequestMethod.GET)
如果通過POST訪問則報錯:
HTTP Status 405 - Request method 'POST' not supported
例如:
@RequestMapping(value ="itemList",method = RequestMethod.POST)
(2) 限定POST方法
@RequestMapping(method = RequestMethod.POST)
如果通過GET訪問則報錯:
HTTP Status 405 - Request method 'GET' not supported
(3) GET和POST都可以
@RequestMapping(method = {RequestMethod.GET,RequestMethod.POST})
(4)限定Controller中的URL訪問方法必須以某字串開頭
在class上新增@RequestMapping(url)指定通用請求字首, 限制此類下的所有方法請求url必須以請求字首開頭
(5)為方法配置多個訪問URL路徑value的值是陣列,可以將多個url對映到同一個方法,比如:
- @RequestMapping(value = {"/item/scw.action","/item/haha.action"})
十:Controller層的返回值
(1)ModelAndView-----controller方法中定義ModelAndView物件並返回,物件中可新增model資料、指定view。
(2)String
效果一:邏輯檢視名---------controller方法返回字串可以指定邏輯檢視名,通過檢視解析器解析為物理檢視地址。
- //指定邏輯檢視名,經過檢視解析器解析為jsp物理路徑:/WEB-INF/jsp/itemList.jsp
- return "itemList";
效果二:Redirect重定向---Contrller方法返回字串可以重定向到一個url地址
如下商品修改提交後重定向到商品編輯頁面。
- /**
- * 更新商品
- *
- * @param item
- * @return
- */
- @RequestMapping("updateItem")
- public String updateItemById(Item item) {
- // 更新商品
- this.itemService.updateItemById(item);
- // 修改商品成功後,重定向到商品編輯頁面
- // 重定向後瀏覽器位址列變更為重定向的地址,
- // 重定向相當於執行了新的request和response,所以之前的請求引數都會丟失
- // 如果要指定請求引數,需要在重定向的url後面新增 ?itemId=1 這樣的請求引數
- return "redirect:/itemEdit.action?itemId=" + item.getId();
- }
效果三:forward轉發-------Controller方法執行後繼續執行另一個Controller方法
如下商品修改提交後轉向到商品修改頁面,修改商品的id引數可以帶到商品修改方法中。
- /**
- * 更新商品
- *
- * @param item
- * @return
- */
- @RequestMapping("updateItem")
- public String updateItemById(Item item) {
- // 更新商品
- this.itemService.updateItemById(item);
- // 修改商品成功後,重定向到商品編輯頁面
- // 重定向後瀏覽器位址列變更為重定向的地址,
- // 重定向相當於執行了新的request和response,所以之前的請求引數都會丟失
- // 如果要指定請求引數,需要在重定向的url後面新增 ?itemId=1 這樣的請求引數
- // return "redirect:/itemEdit.action?itemId=" + item.getId();
- // 修改商品成功後,繼續執行另一個方法
- // 使用轉發的方式實現。轉發後瀏覽器位址列還是原來的請求地址,
- // 轉發並沒有執行新的request和response,所以之前的請求引數都存在
- return "forward:/itemEdit.action";
- }
- //結果轉發到editItem.action,request可以帶過去
- return "forward: /itemEdit.action";
(3)void
在Controller方法形參上可以定義request和response,使用request或response指定響應結果:
1、使用request轉發頁面,如下:
request.getRequestDispatcher("頁面路徑").forward(request, response);
request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request,response);
2、可以通過response頁面重定向:
response.sendRedirect("url")
response.sendRedirect("/springmvc-web2/itemEdit.action");
3、可以通過response指定響應結果,例如響應json資料如下:
response.getWriter().print("{\"abc\":123}");
程式碼測試:- /**
- * 返回void測試
- *
- * @param request
- * @param response
- * @throws Exception
- */
- @RequestMapping("queryItem")
- public void queryItem(HttpServletRequest request, HttpServletResponse response) throws Exception {
- // 1 使用request進行轉發
- // request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request,
- // response);
- // 2 使用response進行重定向到編輯頁面
- // response.sendRedirect("/springmvc-web2/itemEdit.action");
- // 3 使用response直接顯示
- response.getWriter().print("{\"abc\":123}");
- }
總結:針對三種不同的返回值,適用在不同的情況中:
對於ModelAndeView型別,是最無敵的,因為可以很方便的即返回資料,又返回檢視。。
對於String型別,是企業和官方最推薦的,其主要是返回檢視,model帶資料,並且實現解耦形式。
對於void型別,其不返回檢視,那麼就很明顯的適用於Ajax進行請求,返回Jsao格式資料足夠達到了效果。
十一:異常處理器處理流程:
編寫異常處理器類,即繼承HandlerExceptionResolver類。
- package com.itheima.springmvc.exception;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.web.servlet.HandlerExceptionResolver;
- import org.springframework.web.servlet.ModelAndView;
- /**
- * 異常處理器的自定義的實現類
- * @author lx
- *
- */
- public class CustomExceptionResolver implements HandlerExceptionResolver{
- public ModelAndView resolveException(HttpServletRequest request,
- HttpServletResponse response, Object obj,
- Exception e) {
- // TODO Auto-generated method stub 發生異常的地方 Serivce層 方法 包名+類名+方法名(形參) 字串
- //日誌 1.釋出 tomcat war Eclipse 2.釋出Tomcat 伺服器上 Linux Log4j
- ModelAndView mav = new ModelAndView();
- mav.addObject("error", "未知異常");
- mav.setViewName("error");
- return mav;
- }
- }
- <!-- Springmvc的異常處理器 -->
- <beanclass="com.itheima.springmvc.exception.CustomExceptionResolver"/>
自定義異常程式碼:(例子)
- package com.itheima.springmvc.exception;
- public class MessageException extends Exception{
- private String msg;
- public MessageException(String msg) {
- super();
- this.msg = msg;
- }
- public String getMsg() {
- return msg;
- }
- public void setMsg(String msg) {
- this.msg = msg;
- }
- }
- package com.itheima.springmvc.exception;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.web.servlet.HandlerExceptionResolver;
- import org.springframework.web.servlet.ModelAndView;
- /**
- * 異常處理器的自定義的實現類
- * @author lx
- *
- */
- public class CustomExceptionResolver implements HandlerExceptionResolver{
- public ModelAndView resolveException(HttpServletRequest request,
- HttpServletResponse response, Object obj,
- Exception e) {
- // TODO Auto-generated method stub 發生異常的地方 Serivce層 方法 包名+類名+方法名(形參) 字串
- //日誌 1.釋出 tomcat war Eclipse 2.釋出Tomcat 伺服器上 Linux Log4j
- ModelAndView mav = new ModelAndView();
- //判斷異常為型別
- if(e instanceof MessageException){
- //預期異常
- MessageException me = (MessageException)e;
- mav.addObject("error", me.getMsg());
- }else{
- mav.addObject("error", "未知異常");
- }
- mav.setViewName("error");
- return mav;
- }
- }
十二:springmvc與json資料互動
這裡要提到的一個知識點就是,對json字串的接受與傳送。。我想這個是很常見的一個開發吧。比如在ajax中傳送一個json字串過來,那麼到Controller層就需要對json串進行自動解析並且封裝到實體類物件類。。既然用了springmvc當然是已經幫我們實現好了的。
首先,先講解一下什麼叫json字串,注意是字串。。
- {
- "id": 1,
- "name": "測試商品",
- "price": 99.9,
- "detail": "測試商品描述",
- "pic": "123456.jpg"
- }
而上面的json格式對應的json字串應該是這樣的,
var params = '{"id": 1,"name": "測試商品","price": 99.9,"detail": "測試商品描述","pic": "123456.jpg"}';
對了,他們之間的差別就是外層多了兩個單引號,所以這就是為什麼我說的是字串!!!!!!!!!!!!
進入正題:
首先要記住導包
比如有個ajax放鬆json字串給Controller層,
- $.ajax({
- url : "${pageContext.request.contextPath }/json.action",
- data : params,
- contentType : "application/json;charset=UTF-8",//傳送資料的格式
- type : "post",
- dataType : "json",//回撥
- success : function(data){
- alert(data.name);
- }
- });
PS:如果ajax要傳送json字串,那麼就必須知名contentType屬性
Controller層程式碼:
- //json資料互動
- @RequestMapping(value = "/json.action")
- @ResponseBody
- public Items json(@RequestBody Items items){
- System.out.println(items);
- return items;
- }
(2)如果要傳送的也是json格式的字串,那麼就用@ResponseBody在方法前面進行註解就可以了。。。
框架畢竟是框架,省去了很多事情,要不然還要自己進行拼接,麻煩很多。。。
十三:springmvc架構上傳圖片或者檔案(用案例來分析)
首先看看jsp的程式碼(非常簡單的就寫了點):
- <!-- 上傳圖片是需要指定屬性 enctype="multipart/form-data" -->
- <!-- <form id="itemForm" action="" method="post" enctype="multipart/form-data"> -->
- <formid="itemForm"action="${pageContext.request.contextPath }/updateitem.action"method="post"enctype="multipart/form-data">
- <inputtype="hidden"name="items.id"value="${item.id }"
相關推薦
手把手教你玩轉 CSS3 3D 技術(轉載)
是不是 col 默認 占滿 概念 ebe 說明 adb relative css3的3d起步 要玩轉css3的3d,就必須了解幾個詞匯,便是透視(perspective)、旋轉(rotate)和移動(translate)。透視即是以現實的視角來看屏幕上的2D事物,從而展現3
手把手教你玩轉12306驗證碼的秘密!
這樣的 隨機數 結構 實現 把手 session 劃分 技術交流 簡單的 12306相信對很多小夥伴都不陌生,假如問你對這個網站的印象的時候,你不是會立即想起那個坑爹的驗證碼,而正是這個驗證碼,也一時間成為小夥伴們討論的話題,今天思夢PHP就給大家帶來他的實現辦法,純屬技術
手把手教你玩轉阿裏雲雙11拼團活動
tar 數據庫 再次 發放 nbsp 新用戶 span mysql 圖片 各位新老用戶們,如果您已經開了團,但是還不知道怎麽玩?小編告訴來告訴你! 首先,進入活動主頁面,點擊【我要開團】,選擇您想要購買的雲產品進行開團!如果您只想開團不想購買,也可以~ 您開團後將
手把手教你玩轉npm包
【npm是什麼】 官網是這個:https://www.npmjs.com/, 官網介紹:npm is the package manager for javascript, npm是js的包管理器,更多的用於nodejs端。 基本上每種語言都有自己的包管理器,nodejs是
手把手帶你玩轉 Git
目前國內開發人員普遍都開始使用 Git 進行專案的版本管理,如果說你還在使用 SVN 並且對 Git 一無所知的話,那我的這個 Chat 將會幫助到你。 我將手把手教你入門,並且巡迴漸進的帶入到工作的實際應用中。 在本場 Chat 中我將分享: Git 由來和 Git 的作用以及 Git
手把手教你玩轉SOCKET模型之重疊I/O篇(上)
手把手教你玩轉SOCKET模型之重疊I/O篇 “身為一個初學者,時常能體味到初學者入門的艱辛,所以總是想抽空作點什麼來盡我所能的幫助那些需要幫助的人。我也希望大家能把自己的所學和他人一起分享,不要去鄙視別人索取時的貪婪,因為最應該被鄙視的是不肯付出時的吝嗇。” -----
Apache Beam實戰指南 | 手把手教你玩轉大數據存儲HdfsIO
https 教你 存儲 http aec apache windows 手把手教你 數據存儲 https://mp.weixin.qq.com/s?__biz=MzU1NDA4NjU2MA==&mid=2247494843&idx=2&sn=0dd2
手把手教你玩轉小程式websocket
第一步:建立一個 WebSocket 連線 wx.connectSocket({ url: "wss://websocket.allhjs.com", }) 第二步:監聽WebSocket連線開啟 wx
手把手教你玩轉Git
文章已託管到GitHub,大家可以去GitHub檢視下載!並搜尋關注微信公眾號 碼出Offer 領取各種學習資料! 在這裡插入圖片描述 Git應用 一、初識Git 1.1 Git的簡史 同生活中的許多偉大事物一樣,Git 誕生於一個極富紛爭大舉創新的年代。 Linus在1991年建立了開源的L
手把手帶你玩轉 DialogFragment
前言 本文已經收錄到我的 Github 個人部落格,歡迎大佬們光臨寒舍: 我的 GIthub 部落格 思維導圖 一、為什麼要學習 DialogFragment 你還在用 Dialog 嗎? 你還在經常煩惱於螢幕翻轉的時候,Dialog 的各種奇葩情況嗎? 你想降低耦合嗎? 如果你有其中的一個煩惱
手把手教會你如何玩轉SpringMVC
一:SpringMVC處理流程二:SpringMVC開發步驟當然,首先都要記得導包哦!!!!!!!!(1)SpringMVC中得前端配置器的配置<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns:xsi="http://www.w3.org/2
劍英陪你玩轉圖形學(一)打通任督二脈
註定 輸出 加工 學生 odoo itblog 嘗試 固定 討論 1. 這是一個嘗試的系列,突發奇想覺得有聲音可能會更有趣,這個系列Blog都會出視頻有聲版。 這個系列主要是為了玩一玩代碼。 我覺得呢,寫程序是一件很有意思的事情,沒有必要搞得那麽苦大仇深。但是,卻總有那麽一
1分鐘帶你玩轉Kafka
Kafka 分布式 消息服務 說起Kafka,許多使用者對它是又愛又恨。Kafka是一種分布式的、基於發布/訂閱的消息系統,其極致體驗讓人欲罷不能,但操心的運維、復雜的安全策略、可靠性易用性的缺失、算不上極致的性能發揮、並不豐富的消息服務功能,仍需要使用者付出諸多的背後工作。即使你是Kafka老手
10個SecureCRT 小竅門 - 你玩轉幾個?
SecureCRT SFTP Putty 10個SecureCRT 小竅門 - 你玩轉幾個? SecureCRT,相信不用我過多介紹了吧,一款通過telnet,ssh登錄遠端設備的終端軟件。 無論是搞網絡的,做系統的甚至寫程序的,連接設備必用軟件,容易上手,穩定性高,功能強大。 但是,面對Sec
資深程序員帶你玩轉深度學習中的正則化技術(附Python代碼)!
c51 進行 ros batch num 簡單的 oat 深度學習 repr 目錄 1. 什麽是正則化? 2. 正則化如何減少過擬合? 3. 深度學習中的各種正則化技術: L2和L1正則化 Dropout 數據增強(Data augmentation) 提前停止(Ear
科普貼 | 以太坊代幣錢包MyEtherWallet使用教程,一步步教你玩轉MEW
按鈕 wid isp 查詢 到你 pan fail VC oam MyEtherWallet 是一個以太坊的網頁錢包,使用非常簡單,打開網頁就可以使用,源代碼開源,不會在服務器上存儲用戶的錢包信息如私鑰和密碼。支持 Ledger Wallet、TREZOR 等硬件錢包
百曉生帶你玩轉linux系統服務搭建系列----DNS服務的搭建一(正向解析)
home 主配置文件 baidu 安裝環境 圖片 搭建 href ace eid DNS正向解析的搭建 實驗環境系統環境:centos6.5 安裝DNS環境軟件包rpm -ivh /mnt/Packages/bind-9.8.2-0.17.rc1.el6_4.6.x86_
百曉生帶你玩轉linux系統服務搭建系列----pxe遠程安裝服務器的搭建及無人值守安裝
conf fig ces sys 鏡像文件 mount size set blog 實驗環境系統環境:centos6.5:程安裝服務器WIN7:客戶端一、pxe遠程安裝服務器的搭建 安裝並開啟需要的服務,tftp,ftp,dhcp。1) yum -y install t
百曉生帶你玩轉linux系統服務搭建系列----SSH遠程訪問及控制
登入 conf rsa nag 系列 配置 上傳 我們 shel 實驗環境:linux centos 6.5*2實驗目的:用戶登錄控制及密鑰對驗證 sshd服務默認允許root用戶登錄,當在Internet中使用時這是非常不安全的。普遍的做法是先以普通用戶遠程登入,進入安全
百曉生帶你玩轉linux系統服務搭建系列----構建虛擬ApacheWeb主機
ESS host mon conf 圖片 common roo echo 端口 虛擬Web主機指的是在同一臺服務器中運行多個Web站點,其中的每一個站點實際上並不獨自占用整個服務器,因此被稱為“虛擬”Web主機。通過Web主機服務可以充分利用服務器的硬件資源,從而大大降低網