Java Web
coding_1994
来日方长
展开
-
深入理解SPI机制
一、什么是SPISPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI机制。我们先通过一个很简单的例子来看下它是怎么用的。1、小栗子首先,我们需要定义一个接口,SPIServicepackage com.viewscenes.netsupervisor.spi;转载 2020-12-21 21:47:20 · 145 阅读 · 0 评论 -
Callable接口与Runnable接口对比
一般遇到这种问题,第一想法去看看jdk 的api。创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。例如,计算大于某一规定值的质数的线程可以写成: class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) { this.minPrim原创 2020-05-30 22:29:11 · 432 阅读 · 0 评论 -
高并发下接口幂等性解决方案
一、幂等性概念在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就是一个幂等函数. 更复杂的操作幂等保证是利用唯一交易号(流水号)实现.我的理解:幂等就是一个操作,不论执行多少次,产生的效果和返回的结果都是一样的。二、幂等性场景1、查询操作:查询一次和查询多次,在数据不变转载 2020-05-23 22:50:30 · 196 阅读 · 0 评论 -
elk日志分析平台以及数据的可视化
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。.转载 2020-05-19 00:53:33 · 640 阅读 · 0 评论 -
Swagger注解-@ApiModel 和 @ApiModelProperty
@ApiModel使用场景在实体类上边使用,标记类时swagger的解析类概述提供有关swagger模型的其它信息,类将在操作中用作类型时自动内省属性@ApiModelProperty使用场景使用在被 @ApiModel 注解的模型类的属性上概述添加和操作模型属性的数据属性...转载 2020-03-28 23:32:34 · 1947 阅读 · 0 评论 -
怎样用idea将非maven工程打成war包并运行
非maven工程打成war包较为繁琐,打成的jar包可以在tomcat中运行1.打开Project StructureProject的jdk版本设置Platform Settings的SDKs版本设置2.检查Modules里是否有WEB或者Spring,没有的话加入web和spring3.往该项目的libraries(libs)目录下添加缺少的相应jar包,可...转载 2020-03-28 23:27:48 · 1898 阅读 · 0 评论 -
tomcat正常启动但是对应的网页却无法访问------解决办法
我有段时间没启动tomcat了,昨天启动的时候,tomcat能够正常启动,但是对应的网页却打不开。针对此问题的解决采取了以下步骤:首先,我找到tomcat的安装目录,打开config目录下的server.xml配置文件,查看我的服务端口号 <Connector port="80" protocol="HTTP/1.1" connectionTimeo...转载 2020-03-28 23:22:37 · 1788 阅读 · 0 评论 -
Intellij IDEA 报错 Cannot open URL. Please check this URL is correct: http://localhost:8080/
出现原因检查 Tomcat 配置我这里报错的原因是 open browser 和 Tomcat Server Settings -》 HTTP port 设置的不一致当时上边写的是 8888,下边写的是 8080,以至于出现此种错误...转载 2020-03-28 23:18:48 · 1314 阅读 · 0 评论 -
@NotBlank注解地正确使用
@NotNull:不能为null,但可以为empty@NotEmpty:不能为null,而且长度必须大于0@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0案例:注意在使用@NotBlank等注解时,一定要和@valid一起使用,不然@NotBlank不起作用...转载 2020-03-28 23:07:56 · 1376 阅读 · 0 评论 -
Jackson 提供的注解使用说明
Jackson注解主要分成三类:一、只在序列化时生效的注解:1. @JsonPropertyOrder在将 java pojo 对象序列化成为 json 字符串时,使用 @JsonPropertyOrder 可以指定属性在 json 字符串中的顺序。2. @JsonInclude在将 java pojo 对象序列化成为 json 字符串时,使用 @JsonInclude 注解可...转载 2020-03-28 20:59:05 · 1372 阅读 · 1 评论 -
Lombok的使用
当我们想使用@Data @NoArgsConstructor @AllArgsConstructor,可以完成简化我们的代码:@Data :注解在类上, 为类提供读写属性, 此外还提供了get()、set()、equals()、hashCode()、toString() 方法@AllArgsConstructor:会生成一个包含所有变量,同时如果变量使用了NotNull annotat...原创 2019-12-17 14:37:22 · 154 阅读 · 0 评论 -
初用Postman测试工具
一、前言在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性。而这要求前端开发进度和后端进度保持基本一致,任何一方的进度跟不上,都无法及时完成功能模块的测试。做为后端开发人员,要求独立开发完成某个接口后,开发人员自己需要先测试通过后再提交给测试人员进行测试,否则会出现到测试人员哪里业务流程根本就走不通,或者BUG会过多的情况等。...原创 2019-12-15 18:58:52 · 228 阅读 · 0 评论 -
SpringBoot实现过滤器、拦截器与切片源码分析
过滤器Filter过滤器概念Filter是J2E中来的,可以看做是Servlet的一种“加强版”,它主要用于对用户请求进行预处理和后处理,拥有一个典型的处理链。Filter也可以对用户请求生成响应,这一点与Servlet相同,但实际上很少会使用Filter向用户请求生成响应。使用Filter完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行预处理并生成响应,最...转载 2019-02-19 20:45:00 · 351 阅读 · 0 评论 -
MiniUI中datagrid使用的不兼容bug
在使用datagird时,会用到显示一个datagrid,同时隐藏另一个。这个时候遇到了问题:1.datagrid的表头不能正常显示,出现了重叠在一起的情况,看不见表头名称。2.datagrid的 showPager 属性控制的页面参数窗口不能正常显示。我在使用miniui的时候,不清出JS对div的隐藏属性会对datagrid有影响,所以走了不少弯路,根本不清楚为什么会冲突,也不...原创 2019-01-02 17:28:27 · 1185 阅读 · 0 评论 -
使用ajax,Jquery,Spring Boot,MultipartFile实现文件上传功能
MultipartFile方法总结 byte[] getBytes() 返回文件的内容作为一个字节数组。 String getContentType() 返回文件的内容类型。 InputStream getInputStream() 返回InputStream读取文件的内容。 String getName() 返回...原创 2018-12-20 15:49:37 · 2905 阅读 · 0 评论 -
应用层总结-万维网
一、万维网需解决的问题1.怎样标志分布在整个互联网上的万维网文档? 使用统一资源定位符 URL (Uniform Resource Locator) 唯一标识Web上的各种文档 2.用何协议实现万维网上各种超链的链接? 基于超文本传送协议 HTTP (HyperText Transfer Protocol)实现Web客户程序与服务器程序之间的交互 3.怎样使各种万维网文档都能在互联网上的各种计算机...转载 2018-07-15 19:56:34 · 329 阅读 · 0 评论 -
WWW万维网知识小结
前段时间面试,因为没有参加过社会招聘,对于应用层不是考试重点的我一脸懵,翻出课本,上网查了些资料,总结一下,只有总结了东西才是自己的。一.什么是万维网: 万维网是一个大规模的,联机式的信息存储所,英文简称Web。二.超文本,超媒体: 所谓超文本是指包括制定其它文档的链接的文本(text)。 所谓超媒体是指出了包涵文档text之外,还包含...原创 2018-07-15 19:25:59 · 5819 阅读 · 0 评论 -
关于forName()、newInstance()、getMethod()、getClass()等区别的简略说明
因为最近频繁用到,只能是自己查查,总结一下,方便以后利用。1、lass.forName( )静态方法的目的是为了动态加载类。在加载完成后,一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。因此,Class.forName( )是动态加载类是没有用的,其最终目的是为了实例化对象。一般的实现方式:String carClassName = "com.etc...转载 2018-07-29 16:47:53 · 1108 阅读 · 0 评论 -
jsp错误: "javax.servlet.http.HttpServlet" was not found on the Java Build Path
在用Eclipse进行Java web开发时,jsp可能会出现这样的错误:The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path。解决办法如下: 选择第四个,添加库 选择蓝色选中的行: 选择--》应用--》OK 问题就可以解决了。...原创 2018-07-28 23:02:07 · 512 阅读 · 0 评论 -
Servlet面试总结
最近面试,问了Servlet是什么,当时也没想那么多,感觉知道怎么用,用在那一层,用什么语言实现,说下与JSP的区别就可以了,但是从面试的结果来看,面试官好像不是很认可,我们不能改变别人,只能让自己无懈可击,所以在网上书上找了些资料总结一下,感觉自己写一下才是自己的东西。一.什么是Servlet 简单的说Servlet使用Java语言实现的程序,运行于支持Java语言的Web服务器或...原创 2018-07-14 17:06:44 · 10575 阅读 · 5 评论 -
PreparedStatement接口,prepareStatement方法
1、public interface PreparedStatementextends Statement表示预编译的 SQL 语句的对象。 SQL 语句被预编译并且存储在 PreparedStatement 对象中。然后可以使用此对象高效地多次执行该语句。 注:用来设置 IN 参数值的 setter 方法(setShort、setString 等等)必须指定与输入参数的已定义 SQL 类型兼容的...转载 2018-05-19 10:38:20 · 22231 阅读 · 0 评论 -
web.xml中的url-pattern详解
Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单。servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间。 一、先精确匹配,再路径匹配 (路径匹配的时候,先最长路径匹配,再最短路径匹配),至于扩展名匹配,就是单独于精确匹配和匹配的一类了,以上都找不到servlet,就用默认的servlet,配置为<url-...转载 2018-05-05 12:34:25 · 107 阅读 · 0 评论 -
web.xml中的url-pattern详解
Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单。servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间。 一、先精确匹配,再路径匹配 (路径匹配的时候,先最长路径匹配,再最短路径匹配),至于扩展名匹配,就是单独于精确匹配和匹配的一类了,以上都找不到servlet,就用默认的servlet,配置为<url-...转载 2018-05-05 11:14:47 · 238 阅读 · 0 评论 -
设置HTTP请求的字符编码,编码字符集通过过滤器参数
代码如下:import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest...原创 2018-04-26 19:29:27 · 7709 阅读 · 0 评论 -
Servlet请求转发 RequestDispatcher接口
转载出处:https://blog.csdn.net/qfs_v/article/details/2551762在Servlet中,利用RequestDispatcher对象,可以将请求转发给另外一个Servlet或JSP页面,甚至是HTML页面,来处理对请求的响应。一,RequestDispatcher接口方法简介 1,RequestDispatcher对象由Servlet容器来创建...转载 2018-04-21 15:00:09 · 395 阅读 · 0 评论 -
何时使用.do和.jsp
在MVC的项目中一般不会直接去访问JSP,都是通过.do来转发。这样做的好处是:1 所有请求全部通过action来转发,这样便于整体框架的处理。比如,可以加入登陆到某个页面的权限控制,只需要在配置文件中配置,而不用再每个JSP文件中加入相关的逻辑。2 与数据库,文件等底层存储层连接,读取数据的代码可以在类(action)中执行。这样做,一方面可以将很多方法复用,另一方面使JSP页面的代码变得简单而...转载 2018-05-02 00:18:58 · 817 阅读 · 0 评论 -
javaweb中重定向和请求转发(response.sendRedirect()和request.getRequestDispatcher(rul).forward(request,response)
先来两张图,方便理解: 可以看出,重定向时,是服务器向游览器重新发送了一个response命令,让游览器再次向url2发送请求,以获取url2的资源而请求转发时,类似于是服务器自己向自己发了一个跳转,然后将结果直接给游览器,这也是问什么游览器会不改变url地址。下面是具体总结他们的区别一、response.sendRedirect(url)-服务器将新url发送给游览器,游览器再根据新url请求R...转载 2018-05-01 22:28:54 · 208 阅读 · 0 评论 -
MacOS配置MySQL的JavaBean驱动
1.下载jar包:mysql-connector-java-8.0.11.jarhttps://dev.mysql.com/downloads/connector/j/2.找到jar包文件位置,将jar包移至/Library/java/Extensionssudo mv mysql-connector-java-5.1.16-bin.jar(文件位置) /Library/Java/Extensio...原创 2018-05-01 15:11:33 · 428 阅读 · 0 评论 -
rs.getMetaData() 获得表结构
1、得到查询结果,一个数据集 resultSet2 = stat.executeQuery("select * from " + table_name + " limit " + pageNum + ",500");122、得到结果集(rs)的结构信息,比如字段数、字段名等。ResultSetMetaData rsmt=rs.getMetaD...转载 2018-05-19 11:18:52 · 5997 阅读 · 0 评论 -
servlet学习笔记8——ServletContext的讲解和使用
(一)ServletContext的讲解和使用什么是ServletContex?可以想象其为一个公用空间,可以被所有的客户访问如何使用ServletContext?1.得到ServletContextthis.getServletContext();2.可将其看做一张表,其与sesseion相似:每一行就为一个属性----------------------------------------| ...转载 2018-05-19 16:32:38 · 229 阅读 · 0 评论 -
HttpSession与Hibernate中Session的区别
HttpSession与Hibernate中Session的区别 一、javax.servlet.http.HttpSession是一个抽象接口 它的产生:J2EE的Web程序在运行的时候,会给每一个新的访问者建立一个HttpSession,这个Session是用户身份的唯一表示。注意,是容器(Tomcat,Resin)自动创建的。 用途:存放这个用户的一些经常被用到的信息,例如:用户名,权限...转载 2018-06-27 21:12:48 · 493 阅读 · 0 评论 -
Java面试题全集(下)
这部分主要是开源Java EE框架方面的内容,包括Hibernate、MyBatis、Spring、Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题,如果需要了解相关内容,可以参考我的另一篇文章《Java面试题集(86-115)》。此外,这篇文章还对企业应用架构、大型网站架构和应用服务器优化等内容进行了简单的探讨,这些内容相信对面试会很有帮助。...转载 2018-06-10 15:27:45 · 265 阅读 · 0 评论 -
Java面试题全集(中)
这部分主要是与Java Web和Web Service相关的面试题。96、阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。补充:Sun Microsystems公司...转载 2018-06-10 15:26:45 · 141 阅读 · 0 评论 -
Java面试题全集(上)
转载大神博客:原地址如下:https://blog.csdn.net/jackfrued/article/details/449219412013年年底的时候,我看到了网上流传的一个叫做《Java面试题大全》的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对这个所谓的《Java面试大全》进行了全面的修订并重新发布在我的CSDN博客...转载 2018-06-10 15:25:45 · 268 阅读 · 0 评论 -
Java面试题大全(JDBC部分)
JDBC部分的面试题,可能覆盖数据库和JDBC等相关内容1、JDBC操作数据库的步骤 ? 1).注册数据库驱动。 利用Class.forName()方法装载某一个数据库的驱动程序。语法:Class.forName("JDBC 驱动程序类")使用MySQL的驱动程序:Class.forName("com.mysql.jdbc.Driver")使用JDBC-ODBC桥驱动程序:Class.forNam...原创 2018-06-10 13:14:21 · 1328 阅读 · 0 评论 -
The word is not correctly spelled问题解决
eclipse出现了极其让我郁闷的错误,"The word is not correctly spelled" 。然后我继续将代码执行下去,居然执行没有问题,还真的生成了实体映射文件。原来是eclipse的问题,打开eclipse,我忽略掉了错误提示,这才没有出现"The word is not correctly spelled"的错误提示。操作步骤:在eclipse下的Window--Pref...原创 2018-05-14 23:53:14 · 3078 阅读 · 1 评论 -
绝对路径${pageContext.request.contextPath}用法及其与web.xml中Servlet的url-pattern匹配过程
以系统的一个“添加商品”的功能为例加以说明,系统页面为add.jsp,如图一所示:图一 添加商品界面系统的代码目录结构及add.jsp代码如图二所示:图二 系统的代码目录结构及add.jsp代码${pageContext.request.contextPath}用于解决使用相对路径时出现的问题,它的作用是取出所部署项目的名字。对于图片文件,如图二所示“${pageContext.reques...转载 2018-05-20 15:08:49 · 586 阅读 · 0 评论 -
response.setHeader各种用法详解
一秒刷新页面一次 response.setHeader("refresh","1");二秒跳到其他页面 response.setHeader("refresh","2;URL=otherPagename");没有缓存:?12response.setHeader("Pragma", "No-cache");response.setHeader("Cache-Control"转载 2018-05-20 14:20:16 · 5625 阅读 · 0 评论 -
pageEncoding和contentType小结
JSP指令标签中<%@ page contentType="text/html;charset=GB2312"%>这句有什么用途?关于JSP页面中的pageEncoding和contentType两种属性的区别: pageEncoding是jsp文件本身的编码 contentType的charset是指服务器发送给客户端时的内容编码 JSP要经过两次的“编码”,第一阶段会用pag...转载 2018-04-06 00:14:08 · 158 阅读 · 0 评论