缘起 日前,客户需要项目中有发送邮件功能,并且给了一个邮件模板是excel的 [image.png] 需要在邮件正文中按照这个模板显示出来,经过一般折腾,最后实现了这个功能,效果如下 [image.png...] 可以看到是把excel模板内容插入到了邮件的正文中,那么这是如何实现的呢?...这里有两种解决方案 把css中的内容全部copy到html文件中,然后统一copy到ftl模板文件中 通过在ftl文件中引用路径的位置定义标签,通过java代码的方式动态设置请求的绝对路径 我这里两种方式都采用了...spring-boot-starter-freemarker 配置文件中配置springboot邮件发送支持配置 [image.png] 关于如何在java代码中动态设置图片的请求绝对路径可以采用如下方式.../** * 附件路径 */ private String attachmentFilePath; } 模板文件(隐私问题不列出代码) [image.png] 使用
使用范围: OA、MIS、ERP等信息管理类的项目,暂时不考虑网站。 遇到的问题: 完成一个项目,往往需要引用很多js文件,比如jQuery.js、easyUI等。...正文 现在做web版的应用,越来越依赖各种js了,第三方的jQuery、easyUI、my97等,还有自己写的各种js。要实现的功能越来越多,需要使用的js也越来越多,js文件的修改也很频繁。...就是说呢,即使客户端已经有了js文件的缓存,但是浏览器要确认一下是否最新,还是会跑到服务器去问问。这个,折腾呀。当然一般情况下,这个过程会很快,但是有时候这个过程会很慢。 ...优点就是,所有的js文件都在父页里加载,子页直接使用父页里加载好的js,这样子页就不需要在折腾js文件了。...这样效率也可以更高一些,毕竟即使用缓存里加载,也是要判断一下,然后在做个加载的动作,还是会有一点点损耗,js文件越多也就越明显。 那么如何实现呢,想想似乎很简单。
在Freemarker页面中如果使用${userName},并且userName为空,那么Freemarker页面就会崩掉 需要设置默认值${userName!}来避免对象为空的错误。 ?...客户端请求 clientHandler处理客户端的请求 线程池的线程处理handler 根据输入流解析请求(解析请求行,解析消息头,解析消息正文) 根据输出流创建响应对象(发送状态行信息,发送响应头信息...,发送响应正文信息) > 寻找servlet 根据请求路径找到需要哪个servlet处理(选择handler) 通过反射机制加载这个类 实例化servlet servlet处理请求...Freemarker与Web容器无关,web项目中的异常处理(@ControllerAdvice)只处理web请求,经由controller引发的异常,无法处理freemarker的异常,为了不让ftl...页面再出现“乱码”错误,即使出现freemarker语法或者判断错误,还可以继续解析下面的内容。
/x-www-form-urlencoded) enctype:是表单请求正文的类型 B method 属性取值必须是 Post C 提供一个文件选择域 2.1.2...enctype=”application/x-www-form-urlencoded”时,form 表单的正文内容是: key=value&key=value&key=value 当 form 表单的...enctype 取值为 Mutilpart/form-data 时,请求正文内容就变成:每一部分都是 MIME 类型描述的正文 -----------------------------7de1a433602ac...file.exists()) { file.mkdirs(); } //5.使用 MulitpartFile 接口中方法,把上传的文件写到指定位置 uploadFile.transferTo...> 注意: 文件上传的解析器 id 是固定的,不能起别的名称,否则无法实现请求参数的绑定。
请求实战 @RequestBody注解说明 开发功能:新增视频JSON对象,数组提交 结果 @RequestBody注解说明 SpringBoot中有很多注解,需要多使用才能更好的记住 在 Spring...Boot 中,@RequestBody 注解的作用与 Spring MVC 中的作用是一样的,即将 HTTP 请求正文中的数据绑定到方法的参数上。...使用 @RequestBody 注解的方法参数可以是任意类型,Spring Boot 会自动将请求正文中的数据转换为该类型的对象。...例如,假设有以下请求正文: { "name": "Tom", "age": 20 } 那么可以定义一个如下的方法: @PostMapping("/users") public void addUser...(@RequestBody User user) { // 处理 } 需要注意的是,为了能够正确地将请求正文中的数据转换为对象,需要在 Spring Boot 应用程序中配置一个 JSON 解析器
爬虫技术也是一门有趣的技术,可以让你发现网络上的各种有价值的信息。...本文将介绍如何使用ScrapySharp和C#语言,打造一个简单的新闻下载器,可以从指定的新闻网站上抓取新闻标题、摘要、正文、作者、发布时间等信息,并保存到本地文件中。...ScrapySharp和C#的介绍ScrapySharp是一个基于.NET的爬虫框架,它提供了一系列的类和方法,可以方便地实现爬虫的功能,比如发送请求、解析响应、提取数据、保存数据等。...(); // 使用CSS选择器,从HtmlNode对象中获取第一个div标签,且class属性为article-content的HtmlNode对象,表示新闻的正文 HtmlNode...= null) // 如果正文节点不为空 { news.Content = contentNode.InnerText.Trim();
/x-www-form-urlencoded,表示使用url编码正文; 当method=”get”时,enctype的默认值为null,没有正文,所以就不需要enctype了。...通过httpWatch测试,查看表单的请求数据正文,我们发现请求中只有文件名称,而没有文件内容。...通过httpWatch测试,查看表单的请求数据正文部分,发现正文部分是由多个部件组成,每个部件对应一个表单字段,每个部件都有自己的头信息。头信息下面是空行,空行下面是字段的正文部分。...4 文件上传对Servlet的要求 当提交的表单是文件上传表单时,那么对Servlet也是有要求的。 首先我们要肯定一点,文件上传表单的数据也是被封装到request对象中的。...使用解析器来解析request对象:List list = fileUpload.parseRequest(request) 隆重介绍FileItem类,它才是我们最终要的结果。
WebMvcConfigurer 接口的所有方法,但是都是一些空实现,是 springMvc 为定制配置提供的入口。...使用示例: 添加一个自定义的参数解析对象 @Override public void addArgumentResolvers(List...使用此选项不会覆盖处理返回值的内置支持。 要自定义处理返回值的内置支持,请直接配置RequestMappingHandlerAdapter。空实现。...>> converters) 配置HttpMessageConverter用于读取或写入请求或响应的正文。 如果没有加入转换器,则会注册默认的转换器列表。...要增加一个新的 converter 而不影响原有的,可以使用WebMvcConfigurer.extendMessageConverters(java.util.List)方法。
以及协议版本,之间由空格分隔 请求方法包括GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE以及扩展方法,当然并不是所有的服务器都实现了所有的方法,部分方法即便支持,处于安全性的考虑也是不可用的...,表示请求头部结束,接下来为请求正文,这一行非常重要,必不可少 请求正文 可选部分,比如GET请求就没有请求正文 POST请求体中存放的是表单提交的键值对。...Content-Type 响应正文的类型(是图片还是二进制字符串) Content-Length 响应正文长度 Content-Charset 响应正文使用的编码 Content-Encoding...响应正文使用的数据压缩格式 Content-Language 响应正文使用的语言 Expires: -1、Cache-control:no-cache、Pragma:no-cache 三个响应头一起使用...host 表示合法的Internet主机域名或IP地址 port 用于指定一个端口号,拥有被请求资源的服务器主机监听该端口的TCP连接(如果port是空,则使用缺省的端口80。
WEB简介 Web项目 是 B/S结构 浏览器/服务器模式的 浏览器发起请求,服务器作出响应 请求的发起和响应使用HTTP协议进行通讯 所谓协议也就是一种固定格式 而Socket是应用层与传输层的一层编程接口...HttpServlet是针对于HTTP请求的Servlet实现 同理HttpRequest HttpResponse 也是针对HTTP协议的 为什么要绕这么多层,是因为Servlet不针对任何具体的协议...,就可以覆盖这个空的无参数的init() public void init(ServletConfig config) throws ServletException { this.config...返回请求正文的长度,如果请求正文的长度未知,则返回-1; getContentType() —— 获得请求正文的MIME类型,如果请求正文的类型为止,则返回null; getInputStream()...(接收请求),端菜到餐桌(返回响应) 可以看得出来大厨除了炒菜什么都不做 老板做好了所有的外围工作 对于大多数web项目来说 接收到的请求自然就是HTTP请求,响应也是HTTP响应 所以也可以说HttpServlet
报文 示例: 5.1 请求报文 请求行:说明请求类型、要访问的资源以及 HTTP 版本 请求头:说明服务器要使用的信息,如 HOST 表示请求的主机名,User-Agent 表示 请求的浏览器类型等...空行:必须,即使请求数据为空,也必须要有空行。...空行的作用是用来通知服务器 请求头已经结束,接下来是请求数据部分 请求数据:请求数据是在 POST 方法中使用,而不是在 GET 方法中使用,因为 GET 方法的请求数据在 URL 中。...空行:必须,即使响应报文主体为空,也必须要有空行。...空行的作用是用来通知客户端响应头已经结束,接下来是响应正文部分 响应正文:服务器返回给客户端的文本信息 5.3 常用请求头 5.4 常用响应头 5.5 缓存 强缓存 Expires Cache-Control
为了简化这个过程,可以使用 HttpServerCodec 作为服务器端的解码器与编码器,来处理 HTTP 请求,它能够将 HTTP 请求解析为可读的数据,并将响应数据编码为 HTTP 格式。...请求序号还可以用于实现异步通信,发送方可以通过请求序号来判断是否收到了对应的响应,从而实现异步能力。 正文长度:消息正文的长度,用于接收方正确地读取数据。...因为 MessageToMessageDecoder 接收到的是已经被处理过的完整数据,所以即使被多个 channel 共享,也不会造成数据处理上的错误。...对于 Redis 协议,我们了解了其基于字符串的设计和多条命令组合的方式,以及如何基于 Netty 构建自己的 Redis 协议解析器。...对于 HTTP 协议,我们讲解了 HTTP 协议的基本结构、状态码、请求方法和报文格式,并演示了如何使用 Netty 发送和接收 HTTP 请求和响应。
同时,可调用对象的返回值是响应正文(response body),响应正文是可迭代的、并包含了多个字符串。 WSGI application结构如下: ?...这会导致WSGI程序的响应变慢。原因是字符串response_body也是可迭代的,它的每一次迭代只能得到1 byte的数据量,这也意味着每一次只向客户端发送1 byte的数据,直到发送完毕为止。...5.解析POST请求 对于POST请求,查询字符串(query string)是放在HTTP请求正文(request body)中的,而不是放在URL中。...请求正文在environment字典变量中键wsgi.input对应的值中,这是一个类似file的变量,这个值是一个。...The PEP 3333 指出,请求头中CONTENT_LENGTH字段表示正文的大小,但是可能为空、或者不存在,所以读取请求正文时候要用try/except。
通过抓包得到请求路径,POST 请求的正文是一个标准格式的XML: Spring Boot微服务框架处理各种请求时,是通过里面的注解,所以通过注解xxe/simple找到对应类SimpleXXE.java...HTTP返回包的正文body中。...Unmarshaller,也是发现XXE的搜索特征之一。...XML库的Java应用程序易受到XXE的攻击,因为大多数JavaXML解析器的默认设置是启用DTD。...所以使用XML解析器时需要设置其属性,禁止使用外部实体,以上例中SAXReader为例,安全的使用方式如下: sax.setFeature("http://apache.org/xml/features
使用 Dispatch 发送 HTTP 请求 Dispatch 是一个基于 Scala 的 HTTP 客户端库,它提供了一种简洁而强大的方式来构造和执行 HTTP 请求。...Request 对象可以使用 url 方法来创建,该方法接受一个字符串作为参数,表示请求的 URL。...为了解析 HTML 文档,我们可以使用 Jsoup 库,它是一个基于 Java 的 HTML 解析器,它提供了一种类似于 jQuery 的语法来操作 HTML 元素。...为了保存图片,我们可以使用 url 方法来创建一个 Request 对象,表示 GET 请求到图片链接,然后使用 Http 对象来执行这个请求,并获取一个 Response 对象,与之前的步骤相同。...然后,我们可以使用 Response 对象的 getResponseBodyAsBytes 方法来获取响应的正文,表示图片的字节数组。
规范包含请求和响应的模式 请求和响应模式和示例经过格式验证,示例通过模式验证 URI API 使用 HTTPS(或在特殊情况下使用其他带加密的无状态协议) 在组织的官方域下发布的 API 可见域与其他...requests 没有请求正文 POST 用于创建和更新数据?...HTTP 状态码 404 用于错误的 URL 400 -responses 有特定错误的附加信息(例如缺少必需的属性) 当 API 使用者使用错误的凭证时使用 401 -response 403 使用有效但请求...,但不是关于确切错误(堆栈跟踪或错误文本)的非常清晰的普通消息,这可能会将内部实现暴露给 API 使用者 GET: 200 OK 和 items -array 作为空数组 GET:204 空响应,正文中没有任何内容...额外的安全性 所有端点都至少受到客户端特定 API 密钥的保护,即使它们是公开可用的(反农业)? 支持 OpenID 连接和 JWT(基于会话的身份验证)? 防范 CFRS?
为了跟上时代,让自己的软件能够符合主流软件的标准,微软决定使用Open Office的类XML格式标准,此后新版Word文件才与其他文字处理软件兼容,这个格式就是.docx。 ...虽然有一个python-docx库,但是只支持创建新文档和读取一些基本的文件数据,如文件大小和文件标题,不支持正文读取。...,但是都被隐藏在XML里面,好在文档的所有正文内容都包含在标签里面。...标题的内容也是如下,这样就比较好处理了。...BeautifulSoup进行文档内容解析的时候,需要执行解析器的xml,这样findAll才能正常执行。
curl 连接池代理邮箱后台与ES的http连接,以提升网络连接速度; 使用 MQ 对增、删、改这类异步请求进行削峰,以保护下游 ES。...同时,邮件的超大附件信息被放在了正文里,如果搜索超大附件名则需要去搜正文而不是搜附件,这不符合用户使用常识。...另外,有一些 html 节点内包含大量乱码或 url,属性为 display:none,比如邮箱的超大附件,这些乱码文本也是需要剔除掉的。...此时问题就变成寻找一个符合要求的html解析器,把 htmlbody 解析为 dom 树。常见的 xml 解析器有 rapidxml、tinyxml 和 pugixml。...如下图所示,笔者对 pugixml 进行了一番改造,使之增强对 html 的兼容性。在 pugixml 出现异常时,使用速度稍慢些的 ekhtml 解析器作为兜底。 3.
@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。...@RequestBody是作用在形参列表上,用于将前台发送过来固定格式的数据【xml 格式或者 json等】封装为对应的 JavaBean 对象,封装时使用到的一个对象是系统默认配置的 HttpMessageConverter...2、@Controller 和 @RestController的区别 使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面;若返回...@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面 3、spring boot2.0之后,上下文的配置...:如果全部异常返回格式使用json,就可以使用该注解代替@ExceptionHanlder下的@ResponseBody注解。
领取专属 10元无门槛券
手把手带您无忧上云