idea如何打包发布springboot

1.1.环境准备
window系统,jdk8环境,springboot项目,maven3.5.4环境

1.2.进行打包发布

打开idea编辑器,打开一个写好的demo项目

在这里插入图片描述
然后打开idea编辑器下方的terminal窗口,当你打开这个窗口的时候,所在的位置就是目录的根位置了
在这里插入图片描述
输入命令 mvn clean install -Dmaven.test.skip,这条命令就是用maven打成jar包的方式了,然后回车键。
在这里插入图片描述
当看到BUILD SUCCESS的时候,就说明打包成功,在项目的target目录下就会出现一个jar包,默认的jar包名就是artifactId+version在这里插入图片描述
此时再进入到target目录,输入java -jar SpringBoot-Mybatis-0.0.1-SNAPSHOT.jar命令就可以运行jar包了在这里插入图片描述
当你看到Started DemoApplication in …的时候说明启动成功,就能在本地访问了在这里插入图片描述

结论:这就是SpringBoot项目的在Windows环境发布,linux环境也是一样的,同样要安装jdk和maven环境。这也是springboot的神奇之处,不需要发布到Tomcat下,因为SpringBoot内嵌了web服务器包括Tomcat

特点简介

  • 由于传统的ssm、ssh等框架繁琐的配置文件,springboot的出现就是为了简化配置文件
  • 内嵌Web服务器包括Tomcat,只需要打成jar包就可以运行项目
  • SpringBoot基于全注解式的开发

SpringBoot整合Servlet

3.1.方式一

步骤:

  • 写一个类MyFirstServlet继承HttpServlet,并重写doGet方法
  • 在类的上面用@WebServlet标识Servlet并指明name和urlPatterns
  • 在标识有@SpringBootApplication的主类上加上
    @ServletComponentScan

FirstServlet.java

 1package com.example.servlet.myservlet; 2 3import javax.servlet.http.HttpServlet; 4import java.io.IOException; 5import javax.servlet.ServletException; 6import javax.servlet.annotation.WebServlet; 7import javax.servlet.http.HttpServletRequest; 8import javax.servlet.http.HttpServletResponse; 910/**11 *SpringBoot整合Servlet方式一12 *@WebServlet(name="MyFirstServlet",urlPatterns="/myFirst")相当于如下:13 *14 *<servlet>15 * <servlet-name>MyFirstServlet</servlet-name>16 * <servlet-class>ah.szxy.servlet.FirstServlet</servlet-class>17 *</servlet>18 *<servlet-mapping>19 * <servlet-name>MyFirstServlet</servlet-name>20 * <url-pattern>/first</url-pattern>21 *</servlet-mapping>22 *23 */2425@WebServlet(name="MyFirstServlet",urlPatterns="/myFirst")26public class FirstServlet extends HttpServlet {2728    @Override29    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {30        System.out.println("MyFirstServlet init............");31    }32}

ServletApplication.java

 1package com.example.servlet; 2 3import org.springframework.boot.SpringApplication; 4import org.springframework.boot.autoconfigure.SpringBootApplication; 5import org.springframework.boot.web.servlet.ServletComponentScan; 6 7@SpringBootApplication 8@ServletComponentScan //在springBoot启动时会扫描@WebServlet,并将该类实例化 9public class ServletApplication {1011   public static void main(String[] args) {12      SpringApplication.run(ServletApplication.class, args);13   }1415}

然后启动项目

在这里插入图片描述

最后在浏览器输入localhost:8080/myFirstServlet,页面显示空白,在控制台打印MyFirstServlet init…………

在这里插入图片描述

3.2.方式二
步骤:
创建一个类SecondServlet继承HttpServlet,并重写doGet方法。
在@SpringBootApplication标识的主类中加@Bean的一个方法。
SecondServlet.java

 1package com.example.servlet.myservlet; 2 3import javax.servlet.ServletException; 4import javax.servlet.http.HttpServlet; 5import javax.servlet.http.HttpServletRequest; 6import javax.servlet.http.HttpServletResponse; 7import java.io.IOException; 8 9/**10 * 整合Servlet的第二种方式11 */12public class SecondServlet extends HttpServlet {1314    @Override15    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {16        System.out.println("MySecondServlet init..........");17    }18}

ServletApplication.java

 1package com.example.servlet; 2 3import com.example.servlet.myservlet.SecondServlet; 4import org.springframework.boot.SpringApplication; 5import org.springframework.boot.autoconfigure.SpringBootApplication; 6import org.springframework.boot.web.servlet.ServletComponentScan; 7import org.springframework.boot.web.servlet.ServletRegistrationBean; 8import org.springframework.context.annotation.Bean; 910@SpringBootApplication11//@ServletComponentScan //在springBoot启动时会扫描@WebServlet,并将该类实例化12public class ServletApplication {1314   public static void main(String[] args) {15      SpringApplication.run(ServletApplication.class, args);16   }171819  /**20 * 整合Servlet的第二种方式,创建ServletRegistrationBean并添加路径21 * @return22 */23@Bean24public ServletRegistrationBean getServletRegistrationBean(){25   ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());26   bean.addUrlMappings("/mySecond");27   return bean;28}

然后启动项目,在浏览器中访问localhost:8080/mySecondServlet,页面也是空白,在控制台就会打印MySecondServlet init……….

在这里插入图片描述

项目,结构如图所示

在这里插入图片描述

结论:
上面的两种方式推荐使用第一种基于注解的整合
虽然现在几乎用不到servlet了,但是学习SpringBoot整合servlet有助于学习的深入了解,更好的理解框架

4.SpringBoot整合Filter
4.1.方式一
步骤:
创建一个MyFirstFilter类实现Filter接口,并在类上面标注@WebFilter
在@SpringBootApplication的主类上加上@ServletComponentScan注解
MyFirstFilter.java

 1package com.example.servlet.myfilter; 2 3import javax.servlet.*; 4import javax.servlet.annotation.WebFilter; 5import java.io.IOException; 6 7/** 8 * 基于@WebFilter注解整合Filter方式一 9 */10@WebFilter(filterName = "MyFirstFilter",urlPatterns = "/myFirst")11public class MyFirstFilter implements Filter {12    @Override13    public void init(FilterConfig filterConfig) throws ServletException {1415    }1617    @Override18    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {19        System.out.println("进入Filter中了.....");20        arg2.doFilter(arg0,arg1);21        System.out.println("离开Filter了.......");22    }2324    @Override25    public void destroy() {2627    }28}

ServletApplication.java

 1package com.example.servlet; 2 3import com.example.servlet.myservlet.SecondServlet; 4import org.springframework.boot.SpringApplication; 5import org.springframework.boot.autoconfigure.SpringBootApplication; 6import org.springframework.boot.web.servlet.ServletComponentScan; 7import org.springframework.boot.web.servlet.ServletRegistrationBean; 8import org.springframework.context.annotation.Bean; 910@SpringBootApplication11@ServletComponentScan //在springBoot启动时会扫描@WebServlet,并将该类实例化12public class ServletApplication {1314   public static void main(String[] args) {15      SpringApplication.run(ServletApplication.class, args);16   }1718   /**19    * 整合Servlet的第二种方式,创建ServletRegistrationBean并添加路径20    * @return21    */22   @Bean23   public ServletRegistrationBean getServletRegistrationBean(){24      ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());25      bean.addUrlMappings("/mySecond");26      return bean;27   }28}

4.2.方式二
步骤:
创建一个类MySecondFilter实现Filter接口,重写方法。
在@SpringBootApplication标识的主类中加@Bean的一个方法,将MySecondFilter对象注入容器中。

MySecondFilter.java

 1package com.example.servlet.myfilter; 2 3import javax.servlet.*; 4import java.io.IOException; 5 6/** 7 * 整合Filter的第二种方式 8 */ 9public class MySecondFilter implements Filter {10    @Override11    public void init(FilterConfig filterConfig) throws ServletException {1213    }1415    @Override16    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {17        System.out.println("进入MySecondFilter了......");18        arg2.doFilter(arg0, arg1);19        System.out.println("离开MySecondFilter了......");20    }2122    @Override23    public void destroy() {2425    }26}

ServletApplication.java

 1package com.example.servlet; 2 3import com.example.servlet.myfilter.MySecondFilter; 4import com.example.servlet.myservlet.SecondServlet; 5import org.springframework.boot.SpringApplication; 6import org.springframework.boot.autoconfigure.SpringBootApplication; 7import org.springframework.boot.web.servlet.FilterRegistrationBean; 8import org.springframework.boot.web.servlet.ServletComponentScan; 9import org.springframework.boot.web.servlet.ServletRegistrationBean;10import org.springframework.context.annotation.Bean;1112@SpringBootApplication13//@ServletComponentScan //在springBoot启动时会扫描@WebServlet,并将该类实例化14public class ServletApplication {1516   public static void main(String[] args) {17      SpringApplication.run(ServletApplication.class, args);18   }1920   /**21    * 整合Filter的第二种方式22    * 注册Filter23    */24   @Bean25   public FilterRegistrationBean getFilterRegistrationBean() {26      FilterRegistrationBean bean = new FilterRegistrationBean(new MySecondFilter());27      // bean.addUrlPatterns(new String[]{"*.do","*.jsp"});//拦截多个时28      bean.addUrlPatterns("/mySecond");29      return bean;30   }31}

然后在浏览器访问localhost:8080/mySecond,就可以看到控制台打印如下

在这里插入图片描述

5.SpringBoot整合Listener
5.1.方式一
步骤:
创建一个类MyFirstListener实现ServletContextListener接口,重写方法
在该类上加上@WebListener注解

 1package com.example.servlet.mylistener; 2 3import javax.servlet.ServletContextEvent; 4import javax.servlet.ServletContextListener; 5import javax.servlet.annotation.WebListener; 6 7/** 8 * springBoot 整合Listener第一种方式 9 * 创建一个Servlet上下文的监听器10 * @WebListener 自动注册,相当于在web.xml中添加如下代码11 *12 *<listener>13 * <listener-class>ah.szxy.listener.FirstListener</listener-class>14 *</listener>15 */16@WebListener17public class MyFirstListener implements ServletContextListener {1819    @Override20    public void contextDestroyed(ServletContextEvent arg0) {21        // TODO Auto-generated method stub22        System.out.println("MyFirstListener执行销毁了。。。");23    }2425    @Override26    public void contextInitialized(ServletContextEvent arg0) {27        // TODO Auto-generated method stub28        System.out.println("MyFirstListener执行初始化了。。。");29    }30}

执行项目会打印如下,因为用了@ServletComponentScan注解,在项目启动的时候就会扫描包中是否含有servlet,若有就初始化。由于FirstServlet是基于注解初始化的,所以在项目启动的时候,就会执行初始化servlet,被Listener监听到

在这里插入图片描述

5.1.方式二
步骤:
创建一个类MySecondListener实现ServletContextListener接口,重写方法
在@SpringBootApplication标识的主类中加@Bean的一个方法,将MySecondListener对象注入容器中。

 1package com.example.servlet.mylistener; 2 3import javax.servlet.ServletContextEvent; 4import javax.servlet.ServletContextListener; 5 6/** 7 * 整合Listener的第二种方式 8 */ 9public class MySecondListener implements ServletContextListener {1011    @Override12    public void contextDestroyed(ServletContextEvent arg0) {13        // TODO Auto-generated method stub14        System.out.println("MySecondListener执行销毁了。。。");15    }1617    @Override18    public void contextInitialized(ServletContextEvent arg0) {19        // TODO Auto-generated method stub20        System.out.println("MySecondListener执行初始化了。。。");21    }2223}
 1package com.example.servlet; 2 3import com.example.servlet.myfilter.MySecondFilter; 4import com.example.servlet.mylistener.MySecondListener; 5import com.example.servlet.myservlet.SecondServlet; 6import org.springframework.boot.SpringApplication; 7import org.springframework.boot.autoconfigure.SpringBootApplication; 8import org.springframework.boot.web.servlet.FilterRegistrationBean; 9import org.springframework.boot.web.servlet.ServletComponentScan;10import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;11import org.springframework.boot.web.servlet.ServletRegistrationBean;12import org.springframework.context.annotation.Bean;1314@SpringBootApplication15@ServletComponentScan //在springBoot启动时会扫描@WebServlet,并将该类实例化1617public class ServletApplication {1819   public static void main(String[] args) {20      SpringApplication.run(ServletApplication.class, args);21   }2223   /**24    * 注册listener25    */26   @Bean27   public ServletListenerRegistrationBean<MySecondListener> getServletListenerRegistrationBean() {28      ServletListenerRegistrationBean<MySecondListener> bean = new ServletListenerRegistrationBean<MySecondListener>(29            new MySecondListener());30      return bean;31   }3233}

执行项目,在控制台可以看到输出如下,两个Servlet监听器都执行了

在这里插入图片描述

总的项目目录包结构如下:

在这里插入图片描述
6.SpringBoot整合静态资源
6.1.在resource/static路径下
在这里插入图片描述
然后启动项目,在浏览器访问localhost:8080/images/1.jpg
在这里插入图片描述
6.2.在webapp目录路径下
6.2.1.idea中为SpringBoot项目添加web
因为SpringBoot的初始化后是没有webapp目录的,需要在idea中手动加入,但不是直接创建,而是配置出来的,下面是SpringBoot项目配置webapp的教程

6.2.2.选中项目然后是ctrl+alt+shift+s,就会弹出如下页面

在这里插入图片描述

6.2.3.选中Modules,然后点击+号,如下

在这里插入图片描述
配置的目录的路径分别为:
E:\liduchang\servlet\src\main\webapp\WEB-INF\web.xml
E:\liduchang\servlet\src\main\webapp

6.2.4出现如下界面,点击铅笔进行编辑web.xml的路径,然后双击第二处同理编辑webapp的路径

在这里插入图片描述
6.2.5最后配置出来的目录结构,如下图所示
在这里插入图片描述

6.2.6然后再webapp先新建一个images文件夹,复制一张图片到images文件夹下,名为2.jpg,并再webapp下新建一个index.html内容如下

 1<!DOCTYPE html> 2<html lang="en"> 3<head> 4    <meta charset="UTF-8"> 5    <title>Title</title> 6</head> 7<body> 8<h1>静态资源访问方式一</h1><hr> 9<img alt="" src="data:images/2.jpg">10</body>11</html>

6.2.7启动项目,然后再浏览器访问localhost:8080,出现如图所示,配置成功

在这里插入图片描述

7.SpringBoot文件上传
7.1.文件上传
项目结构图

在这里插入图片描述

  • 上传到本地磁盘,名字为原文件名
  • 上传到本地磁盘,名字为随机名
  • 上传到项目webapp文件夹下的images文件夹下

upload.html(文件上传主页)

 1<!DOCTYPE html> 2<html lang="en"> 3<head> 4    <meta charset="UTF-8"> 5    <title>Title</title> 6</head> 7<body> 8<!-- 9    表单提交的方式为   :  post10    enctype的值为 : multipart/form-data11    file类型的输入框的name属性要和 MultipartFile 的形参一样 ,这样才能进行文件的上传12-->13<h1>文件上传到本地e盘</h1><hr>14<form action="/uploadToPC" method="post" enctype="multipart/form-data">15    <input type="file" name="file" ><br>16    <input type="submit" value="点击上传">17</form>1819<h1>文件上传到e盘名字随机</h1><hr>20<form action="/fileUploadToPCWithNameRandom" method="post" enctype="multipart/form-data">21    <input type="file" name="file" ><br>22    <input type="submit" value="点击上传">23</form>2425<h1>文件上传到本项目</h1><hr>26<form action="/uploadToProject" method="post" enctype="multipart/form-data">27    <input type="file" name="file" ><br>28    <input type="submit" value="点击上传">29</form>3031</body>3233</html>

FileUploadController.java(文件上传Controller)

 1package com.example.servlet.controller; 2 3import com.example.servlet.util.FileUtils; 4import org.springframework.web.bind.annotation.RequestMapping; 5import org.springframework.web.bind.annotation.RestController; 6import org.springframework.web.multipart.MultipartFile; 7 8import javax.servlet.http.HttpSession; 9import java.io.File;10import java.io.IOException;11import java.util.HashMap;12import java.util.Map;1314/**15 * 文件上传Controller16 */17@RestController18public class FileUploadController {1920    /**21     * 测试文件上传到本地e磁盘22     * @return23     */24    @RequestMapping("/uploadToPC")25    public Map<String,Object> fileUploadToPC(MultipartFile file) throws IOException {26        // 获取文件名 df8306e403c49fdf701230317dc99d9.jpg27        System.out.println(file.getOriginalFilename());28        // 将上传的文件放在e盘下29        file.transferTo(new File("e:/"+file.getOriginalFilename()));30        Map<String, Object> map= new HashMap<>();31        map.put("msg", "上传文件成功");32        return map;33    }3435    @RequestMapping("/fileUploadToPCWithNameRandom")36    public Map<String, Object> fileUploadToPCWithNameRandom(MultipartFile file) throws IOException {37        String name = file.getOriginalFilename();38        String prefix = FileUtils.getRandomName();39        String suffix = name.substring(name.lastIndexOf("."));40        name = prefix+suffix;41        file.transferTo(new File("e:/"+name));42        Map<String, Object> map = new HashMap<String, Object>();43        map.put("msg", "ok");44        return map;45    }4647    /**48     * 上传文件到项目的webapp下的images文件夹下49     * 不过一般文件不会上传到项目下,一般上传到本50     * 服务器的其它磁盘上,或者上传到专门的服务器51     * 上,所以这个方法只要了解就好52     * @param file53     * @return54     */55    @RequestMapping("/uploadToProject")56    public String uploadToProject(MultipartFile file, HttpSession session){57        // 通过session获取绝对路径,方法内部加上/WEB-INF/images,58        // 表示在项目的images目录下,需要创建该文件夹并进行静态资源放行59        String path= session.getServletContext().getRealPath("/images");60        System.err.println(path);61        String fileName= file.getOriginalFilename();62        File f= new File(path, fileName);63        try {64            file.transferTo(f);65        } catch (IOException e) {66            e.printStackTrace();67        }68        return "ok";69    }70}

FileUtils.java(文件随机命名工具类)

 1package com.example.servlet.util; 2 3import java.util.Random; 4import java.util.UUID; 5 6/** 7 * 文件名随机生成工具类 8 * @version 1.0 9 */10public class FileUtils {1112    /**13     * 图片名生成14     */15    public static String getRandomName() {16        //取当前时间的长整形毫秒数17        long millis = System.currentTimeMillis();18        Random random = new Random();19        //获取0-1000不包含1000,的整形20        int end3 = random.nextInt(1000);21        //如果不足三位前面补022        String str = millis + String.format("%03d", end3);23        return str;24    }2526    /**27     * 商品id生成28     */29    public static long getRandomId() {30        //取当前时间的长整形值包含毫秒31        long millis = System.currentTimeMillis();32        Random random = new Random();33        //随机获取0-99不包含99,之间的整形34        int end2 = random.nextInt(99);35        //如果不足两位前面补036        String str = millis + String.format("%02d", end2);37        long id = new Long(str);38        return id;39    }4041}

在配置文件配置文件的上传的配置信息

1application.properties2#设置单个文件上传大小3spring.http.multipart.maxFileSize=200MB4#设置一次请求上传文件的总容量5spring.http.multipart.maxRequestSize=200MB

最后分享一波java的资源,资源包括java从入门到开发的全套视频,以及java的26个项目,资源比较大,大小大概是290g左右,链接容易失效,获取的方式是关注公众号:非科班的科班,让后回复:java项目即可获得,祝大家学习愉快

SpringBoot初级知识总结,太难了,未完待续.......的更多相关文章

  1. 初进MFC的世界,太奇妙。第六次作业----未完待续

    又一次的迁徙.我希望能够早些抵达. 第六次作业-未完待续!图形界面,计算器文件 本次的作业是给自己的计算器加一个可视化的窗口,我开始也是很激动和憧憬的,看了很多的界面库,发现并没有想象的那么简单,因为 ...

  2. ASP.NET Core 2.2 基础知识(八) 主机 (未完待续)

    主机负责应用程序启动和生存期管理.共有两个主机 API : 1.Web 主机 : 适用于托管 Web 应用,基于 IWebHostBuilder ; 2.通用主机 : 适用于托管非 Web 应用. 基 ...

  3. 省钱版----查找 IoT 设备TTL线序__未完待续

    作者:仙果 原文来自:省钱版—-查找 IoT 设备TTL线序 省钱版----查找 IoT 设备TTL线序__未完待续 缘由 在IoT固件调试分析的过程中,建议首先在IoT设备的板子上焊接调试线,这是能 ...

  4. virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)

    virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...

  5. 一篇文章让Oracle程序猿学会MySql【未完待续】

    一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...

  6. [python]爬代理ip v2.0(未完待续)

    爬代理ip 所有的代码都放到了我的github上面, HTTP代理常识 HTTP代理按匿名度可分为透明代理.匿名代理和高度匿名代理. 特别感谢:勤奋的小孩 在评论中指出我文章中的错误. REMOTE_ ...

  7. C++语言体系设计哲学的一些随想(未完待续)

    对于静态类型语言,其本质目标在于恰当地操作数据,得到期望的值.具体而言,需要: (1)定义数据类型 你定义的数据是什么,是整形还是浮点还是字符.该类型的数据可以包含的值的范围是什么. (2)定义操作的 ...

  8. 2017-2-17,c#基础,输入输出,定义变量,变量赋值,int.Parse的基础理解,在本的初学者也能看懂(未完待续)

    计算机是死板的固定的,人是活跃的开放的,初学c#第一天给我的感觉就是:用人活跃开放式的思维去与呆萌的计算机沟通,摸清脾气,有利于双方深入合作,这也是今晚的教训,细心,仔细,大胆 c#基础 1.Hell ...

  9. 布隆过滤器(Bloom Filter) 未完待续

    布隆过滤器雏形 未完待续..... 计算错误率 现在有一个空额布隆过滤器, 过滤器里的bit array的大小是m. 咱来插入一个元素. 这次插入过程中的第一个hash函数会算出一个位置, 然后把这个 ...

  10. Go web编程学习笔记——未完待续

    1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...

随机推荐

  1. 泛型 List转换成DataTable

    private DataTable listToDataTable<T>(List<T> ListItem) { //实列化DataTable对象 var dt = new D ...

  2. 如何把对象手动注入Spring容器并实现依赖注入

    将对象注入到Spring容器并实现依赖注入 public class UserDao { @Resource AccountService accountService; public void pr ...

  3. java基础之----非空判断

    大家好,第一次写博客,一直想写博客,用于自我总结,也用于帮助新同学成长. 平常我们开发的时候,用到很多非空判断,但是很多同学用到的地方不是很准确,这里,我把自己平时遇到的坑跟大家说说.我废话不多,只想 ...

  4. SpringBoot 2.1.6 启动原理解析(一)

    小白第一次写博客,如果有不足之处烦请各位大佬指正. 用了好久的SpringBoot了,一直不清楚它内部的一些启动原理,如何加载yml文件.如何初始化bean的,今天就记录一下,新建了一个springb ...

  5. PHP 转化 Excel导入时间

    $fixation = 25569; $fixationT = 24 * 60 * 60; $date = gmdate('Y-m-d H:i:s', ('excel导入的时间'- $fixation ...

  6. Redis-CAP定理和BASE理论(二)

    CAP理论概述 1998 年来自柏克莱加州大学的计算机科学家 埃里克.布鲁尔(Eric Brewer) 提出分布式系统的三个基本指标:Consistency(一致性).Availability(可用性 ...

  7. TieredMergePolicy

    setFloorSegmentMB多少MB一个层级,在此区间的segment分为一个floor. setMaxMergeAtOnce一次merge多少个segment. setSegmentsPerT ...

  8. 小白学 Python 爬虫(38):爬虫框架 Scrapy 入门基础(六) Item Pipeline

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  9. Eclipse中安装Jetty服务器

    1. 在eclipse中安装jetty适配器 方法一: (1) 打开 Windows -> Preference -> Server -> Runtime Environment , ...

  10. 浏览器从输入url 到页面展示完成响应过程

    用户从输入 url 到浏览器响应,呈现给用户的具体过程 1.用户在输入栏输入地址 (1) 如果有 beforeunload 事件会先执行判断继续还是跳出操作 (2) 浏览器进程识别是 地址还是关键字检 ...