Java EE

【IDEA】HTML通过servlet3.0注解名提交表单到servlet类找不到页面的问题

六月ゝ 毕业季﹏ 提交于 2020-08-05 07:05:27
IDEA一时爽,摸不着头的BUG火葬场 这个问题困扰我整整一天一夜,先是代码检查路径设置找不出问题,后面换tomcat版不行,抱着侥幸心理换IDEA版本意料之中还是没解决问题。 都快想秃了最后终于完美解决了。 场景描述:   IDEA中新建web项目   tomcat正常   HTML通过XML配置文件提交表单正常    当HTML通过Servlet注解名提交表单时404 问题分析:    通常404是路径出现问题,此时第一反应是form中action值和servlet注解值出错,检查后 属性值匹配。检查游览器访问路径最终找到问题出在启动虚拟路径上。    如图访问login.html时是通过 /test 这个虚拟路径访问的。但是提交表单后游览器中虚拟路径 消失而是直接通过servlet注解名提交表单数据,见图: 明白这里解决问题就简单了,想到的有两种解决方法:   方法一:给servlet注解加上虚拟路径(没啥意义)   方法二:配置Tomcat的Deployment把Application context后面的虚拟路径名删除(推荐) 方法二细节:   1.Run->Edit Configuration   2.点击Deployment        3.找到Application context删除虚拟路径名      重启服务器运行项目,至此问题解决    来源:

【Spring】原来SpringBoot是这样玩的

拜拜、爱过 提交于 2020-08-05 06:08:30
菜瓜:我自己去调Mvc的源码差点没给Spring的逻辑秀死。。。难受 水稻:那今天咱们看一个简单易用的SpringBoot吧 菜瓜:可以,这个我熟悉 水稻:熟悉? 菜瓜:当我没说,请开始你的表演 水稻:我没有别的意思,就是单纯的反问(手动狗头)。平时工作中用多了SpringBoot。咱们今天带着几个问题来看看它的操作吧 如何启动Spring容器 如何内嵌Tomcat容器 如何完成自动装配,就是0配置 菜瓜:你确定这是我熟悉的SpringBoot??? 水稻:。。。看过来 启动类点进去 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ... listeners.starting(); try { ... // ①创建Spring上下文容器对象 - 默认Servlet容器 context = createApplicationContext(); ... // ②调用refresh方法 - 回到熟悉的容器启动流程 refreshContext(context); afterRefresh(context, applicationArguments); ... ... return context; }

Java基础

邮差的信 提交于 2020-08-05 04:53:03
1.java 概述 1.1.java 是什么? 答: java是一门面向对象的程序设计语言 。 java具有简单性,面向对象,分布性,健壮性,安全性,平台独立与可移植性,多线程,动态性等特点。java可以编写桌面应用程序,web应用程序,分布式系统,和嵌入式系统应用程序等。 1.2. 面向对象是什么?它的基本特征什么? 答: 面向对象是一种编程思想 ,面向对象的编程思想是面向过程的编程思想的升华。 基本特征: (1)封装----将原本散落的东西聚集在一起,统一处理 (2)继承----子承父业 (3)多态----同一事物在不同环境下呈现的不同状态。 1.3.java的三大版本以及它们的区别? 答:2005年之前: J2SE----java 标准版 J2EE----java 企业版 J2ME----java 微型版 2005年至今: java SE----java 标准版 java EE----java 企业版 java ME----java 微型版 区别: java SE:应用于桌面环境,桌面应用的开发。 java EE:应用于基于java的应用服务器,web程序,网站。 java ME:应用于移动,无线及有限资源的环境,移动终端程序开发。 1.4. JDK是什么?由几部分组成?每一部分是什么? 答:JDK是java开发工具。 JDK包含java开发工具集和JRE。

JPA使用nativequery多表关联查询返回自定义实体类

末鹿安然 提交于 2020-08-05 04:50:16
本文为JPA的学习采坑,如有问题欢迎指正。 JPA官方推荐的多表关联查询使用不便,接触的有些项目可能会使用JPA 做简单查询,Mybaits做复杂查询。所以想要寻找一种好用的解决方案。 JPA多表关联的实现方式 1.使用Specification实现映射关系匹配,如@ManyToOne等 2.使用NativeQuery等sql或hql来实现 优缺点对比 1.映射关系是hibernate的入门基础,很多人都会习惯去使用。个人不太喜欢这种方式,复用性太弱,且不灵活特别是在多表复杂业务情况下。 2.使用Specification方式需要继承JpaSpecificationExecutor接口,构造对应的方法后传入封装查询条件的Specification对象。逻辑上简单易懂,但是构造Specification对象需要拼接格式条件非常繁琐。 3.直接使用NativeQuery等方式实现复杂查询个人比较喜欢,直观且便利,弊端在于无法返回自定义实体类。需要手动封装工具类来实现Object到目标对象的反射。 使用sql并返回自定义实体类 个人比较喜欢的实现方式,不多说看代码 ———————————————— import org.springframework.stereotype.Repository; import javax.persistence.EntityManager; import

Tomcat配置文件详解

不问归期 提交于 2020-08-05 04:42:02
打开Tomcat的配置目录,我们会发现下面的配置文件: server.xml:Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息; web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的Web应用程序提供包括MIME映射等默认配置信息; context.xml:所有host的默认配置信息; logging.properties:日志相关配置; tomcat-users.xml:Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现; catalina.policy:Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力,以安全模式启动Tomcat会使用这个配置 catalina.properties:Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制;Tomcat在启动时会事先读取此文件的相关设置; jaspic-providers.xml:用户认证配置文件 这篇博客就来介绍下这几个配置文件的作用,以及常用的配置选项。 server.xml配置 server

java http大文件断点续传上传问题

↘锁芯ラ 提交于 2020-08-05 04:21:58
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所有浏览器。 支持文件批量上传 支持文件夹上传,且要求在服务端保留层级结构。文件夹数量要求支持到10W。 支持大文件断点续传,要求刷新浏览器,重启浏览器,重启电脑后仍然能够继续上传。文件大小要求能够支持到50个G。 支持自动加载本地文件,要求能够自动加载指定的本地文件。 支持文件批量下载,要求不要在服务器打包。因为50G的文件在服务器打包时间比较长。 支持文件夹下载,要求不要在服务器打包,下载到本地后要求保留层级结构 文件列表面板支持路径导航,新建文件夹 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,struts上传的功能就是基于这个实现的。common-fileupload是依赖于common-io这个包的,所以还需要下载这个包。 一、开发环境搭建

SpringBoot之Thymeleaf模板引擎如何运用?案例详解

♀尐吖头ヾ 提交于 2020-08-05 04:20:55
根据B站狂神学java的笔记 模板引擎Thymeleaf 前端想要显示数据,我们以前是把页面转换成jsp。这样我们就能够实现数据的显示,及交互等。 jsp支持非常强大的功能,包括能写Java代码 。但是我们使用SpringBoot项目是jar方式而不是war。我们还是使用嵌入式的Tomcat,但现在springBoot默认是不支持jsp的。那该使用什么呢? 第二要注意 : 光理论是不够的。在此免费赠送5大JAVA架构项目实战教程及大厂面试题库,有兴趣的可以进裙 783802103获取,没基础勿进哦! SpringBoot推荐你可以来使用模板引擎: 模板引擎,我们其实大家听到很多,其实jsp就是一个模板引擎,还有用的比较多的freemarker,包括SpringBoot给我们推荐的Thymeleaf,模板引擎有非常多,但再多的模板引擎,他们的思想都是一样的,什么样一个思想呢我们来看一下这张图: 模板引擎的作用就是使用表达式解析后台的数据。 引入Thymeleaf 怎么引入呢,对于springboot来说,什么事情不都是一个start的事情嘛,我们去在项目中引入一下。给大家三个网址: Thymeleaf 官网: https://www.thymeleaf.org/ Thymeleaf 在Github 的主页: https://github.com/thymeleaf/thymeleaf

Tomcat的基本使用及相关知识的概述(超详细版)

半城伤御伤魂 提交于 2020-08-05 02:55:39
絮絮叨叨: 在深入了解Tomcat源码之前,本来是想亲自写一篇Tomcat的基本使用教程的,在网上兜兜转转发现了这篇博客: https://blog.csdn.net/weixin_40396459/article/details/81706543 ,写的特别详细,虽然有点老,但对于Tomcat入门来说是无所谓的,足够让初学者了解如何使用这只“猫”。在这里我就不重复造轮子了,将这篇博客贴在这里,方便大家阅读。在这篇文章之后,我们开始Tomcat的深入分析,以后每写一篇,我都会贴在这里,有哪里不对的还请大家不吝指教。下一篇文章是搭建tomcat的源码项目,将tomcat当做一个普通项目来运行,剖析里面的源码。 文章末尾有福利~ 正文 1、JavaWeb概念 Java web,是用java技术来解决相关web互联网领域的技术的总称。web包括:web服务器和web客户端两部分。 java在最早web客户端的应用有java applet程序,不过这种技术在很久之前就已经被淘汰了。java在服务器端的应用非常丰富, 比如Servlet,jsp和第三方框架等等。java技术对web领域的发展注入了强大的动力 简单的说,就是使用java语言实现浏览器可以访问的程序内容。称之为Java Web。 javaweb开发是基于请求和响应的: 请求 :浏览器(客户端)向服务器发送信息 响应 :服务器向

【Servlet】AsyncContext 实现长轮询场景-配置动态更新

烂漫一生 提交于 2020-08-05 01:19:36
场景:实现类似Nacos配置实时更新 1. 需求 配置中心数据未变更: 正常心跳检测 配置中心数据变更: 实时同步本地 2. 实现 2.1 基础类 ConfigData: 配置抽象 /** * function: 配置数据 * author: zhiwei_yang * time: 2020/7/18-18:02 */ @Data public class ConfigData { /** 配置名 **/ private String name; /** 配置数据 **/ private String data; /** 配置签名,保证唯一 **/ private String signature; /** * 监听服务器IP */ private transient Set<String> listenHosts = new CopyOnWriteArraySet<>(); /** * 获取配置签名 * @return */ public String getSignature() { return signature == null ? DigestUtils.md5Hex(name+"#"+data): signature; } } ConfigStore: 模拟配置存储 ** * function: 配置数据存储,模拟配置中心 * author: zhiwei_yang *

Bean后置处理器

拥有回忆 提交于 2020-08-05 01:07:11
创建完对象之后, 接下来, 就应该想办法对属性进行注入了, 其中就包括 @Autowired 注入 但是在注入之前, 貌似 还没有对 @Autowired 进行扫描和解析. 代码块: if (instanceWrapper == null ) { /** * 创建 bean 实例,并将实例包裹在 BeanWrapper 实现类对象中返回。 * createBeanInstance中包含三种创建 bean 实例的方式: * 1. 通过工厂方法创建 bean 实例 * 2. 通过构造方法自动注入(autowire by constructor)的方式创建 bean 实例 * 3. 通过无参构造方法方法创建 bean 实例 * * 若 bean 的配置信息中配置了 lookup-method 和 replace-method,则会使用 CGLIB 增强 bean 实例。 */ instanceWrapper = createBeanInstance(beanName, mbd, args); } final Object bean = instanceWrapper.getWrappedInstance(); Class <?> beanType = instanceWrapper.getWrappedClass(); if (beanType != NullBean. class )