使用springboot开发web项目
1 )、创建SpringBoot应用,选中我们需要的模块; web
2 )、SpringBoot会默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以将项目运行起来 ;/
3 )、自己编写核心的业务代码即可;
2:web资源的映射
从 ResourceProperties 中可以发现:
首先,在 Spring Boot 中,默认情况下,一共有5个位置可以放静态资源,五个路径分别是如下5个:
前四个目录好理解,分别对应了resources目录下不同的目录,第5个 / 是啥意思呢?我们知道,在 Spring Boot 项目中,默认是没有 webapp 这个目录的,当然我们也可以自己添加(例如在需要使用JSP的时候),这里第5个 / 其实就是表示 webapp 目录中的静态资源也不被拦截。如果同一个文件分别出现在五个目录下,那么优先级也是按照上面列出的顺序。
不过,虽然有5个存储目录,除了第5个用的比较少之外,其他四个,系统默认创建了 classpath:/static/ , 正常情况下,我们只需要将我们的静态资源放到这个目录下即可,
也不需要额外去创建其他静态资源目录,例如我在 classpath:/static/ 目录下放了一张名为index.html,那么我的访问路径是:http://localhost:8080/index.html
注意:
前提 : 需要先引入thymeleaf的依赖。
1 、欢迎页面; springboot会去静态资源文件夹(static.public)下找所有index.html页面; localhost:8080/ 会去找index.html页面,写和不写都是一样的。
2 、static目录一般是存放一些静态的资源文件,比如js, css, images
3 、除了以上的几个文件夹,创建项目的同时还会创建一个templates文件夹,这个文件夹一般是存放html文件的
4 、static、templates这三个文件夹中的文件在写路径的时候可以直接引用,既可以忽略这三个文件夹,不需要写
5 、templates下的资源文件 不能通过url请求直接的进行访问 ,和以前的web-inf下的资源一样。只能通过服务器端的跳转实现。
6 、static目录下的资源可以通过浏览器直接访问,并且在访问的时候,不需要写static, 直接写页面的页面的名称即可。
7 、 在页面跳转的时候,一定不能使用restController这个注解 ,这个注解是将数据转换为json的, 如果需要跳转需要使用Controller的原生注解
8 、springboot的页面跳转要写全称的写法:转发到static下“forward:/aa.html”, 重定向到static下“redirect:/aa.html”,
如果页面在templates下的话,就需要写页面名称即可,springboot默认的页面就是在那里,此时只能使用简写的方式,不能写完整的写法。
9 、如果在templates下面有文件夹存在(user),目标的页面(userList.html)在文件夹中的话,此时依然通过返回简写字符串的方式, return "user/userList" ;
3:thymeleaf模板引擎
开发传统Java WEB工程时,我们可以使用JSP页面模板语言,但是在SpringBoot中已经不推荐使用了。SpringBoot支持如下页面模板语言
Thymeleaf、FreeMarker、Velocity、Groovy
上面并没有列举所有SpringBoot支持的页面模板技术。
其中Thymeleaf是SpringBoot官方所推荐使用的。他的语法更加简洁。
1:添加thymeleaf的依赖
thymeleaf使用
其实在springboot的自动配置中已经告诉了我们如何使用,在ThymeleafProperties中已经做好了视图解析器的配置。
以前在使用springMVC写练习的时候,当一个方法返回字符串的时候,他会通过xml中配置的视图解析器进行页面视图的拼接和渲染。
现在springboot已经完全帮我们配置好了,默认的前缀是templates文件夹,默认的后缀是html文件,如果添加了thyleaf的模板引擎的话,方法返回字符串就会自动的拼接和查找,
注意:
类上的注解不能使用 @RestController 了 ,需要使用最原始的Controller注解
使用前需要在html中引入引入名称空间:
3:语法规则
1)th:text;改变当前元素里面的文本内容
th :任意html属性;来替换原生属性的值,如:th:text="${hello} th:id="${hello}" ; hello是存储在请求域中的key
表达式
获取request中的值:
${key} 取出具体的值 - 写在标签内部, 如th:text = “${key}”
[[${key}]] 行内的写法, 如:[[${key}]] 这样的写法和上面的是一致得
获取session中的值:
获取session中的值需要在前面加session前缀,如:[[${session.key}]]
重点掌握each,if, text即可。
注意th:each在哪个标签上面,每遍历一次,都会新建对应的这个标签。
接管springmvc
1:springmvc配置原理
Spring Boot 自动配置好了SpringMVC的绝大部分配置
SpringBoot 对SpringMVC的默认配置主要是在WebMvcAutoConfiguration这个类中,
在autoconfigure配置的web下都是对springmvc的默认配置,在使用的时候很多功能都是和 原生的springmvc是一致的。
如:接受用户的请求参数,给用户响应等,springboot结合thymeleaf模板引擎的话是默认将请求转发到templates这个目录下。
原理:
、SpringBoot在自动配置很多组件的时候,先看容器中有没有用户自己配置的(@Bean、@Component)如果有就用用户配置的,如果没有才自动配置;
如果有些组件可以有多个(ViewResolver)将用户配置的和自己默 认的组合起来;
、在SpringBoot中会有非常多的xxxConfigurer帮助我们进行扩展配置
2:拓展springmvc
如果你不想使用springmvc的某些配置,或者想对其中的某些配置进行拓展的话,此时可以对springmvc的配置进行拓展;
具体的步骤:
编写一个配置类,在类上标注@Configuration 即可,这样springboot在启动的时候会加载这个配置类。
实现WebMvcConfigurer,springmvc的拓展配置类要实现WebMvcConfigurer接口,老版本还可以继承WebMvcConfigurerAdapter类,现在已不再使用。
这个接口里面还有很多的空的拓展方法,如果你想对哪些内容做拓展,直接重写对应的方法即可(ctrl + o 查看可以重写的方法)。
注意:
1 :一定不能添加@EnableWebMvc这个注解,如果添加那么就是完全托管了springmvc, springboot的自动配置将会失效,所以基本不使用。
2 :编写配置类的方法是既保留了springboot的很多自动配置,同时我们自己编写的配置信息也同时有效
3 :实现重定向操作的话,可以使用springmvc原生的重定向也可以通过实现WebMvcConfigurer接口中的 addRedirectViewController 来实现。
4 :springboot进行重定向的操作时,会先去static文件夹查找,然后在去public中找,如果这两个地方都没有的话则会报错。
5:案例练习
将素材中的文件复制到对应的目录下。
静态资源html文件存储在templates下,其他静态资源放在static下,这样就可以使用thymeleaf的模板语法了,实体和dao存放在对应的目录下。
注意页面的样式,如果没有样式的话可能是bootstrap的引进出现了问题,注意路径问题,static不用写,引入的时候使用/代表static目录。
开发期间html页面修改之后是不会实时变化的,如果希望修改之后不重启生效的话,需要进行下面的操作
禁用模板引擎的缓存功能:spring.thymeleaf.cache=false
页面修改完成以后ctrl+f9:重新编译;
这样就不需要重启服务器了,直接会对页面重新编译。
1:登陆
访问项目时,springboot默认会去templates下找index.html页面,不写的话也会直接访问,但是在后面加上index.html的时候反而会报错;
其实我们可以写一个访问主页的方法:通过模板语法返回一个字符串index即可,请求路径使用 @RequestMapping({"/","/index.html"}) 来处理。
进入后台的时候暂时不需要链接数据库,
假设只要用户名为lili,密码为111就登陆成功,
成功的话进入主页,然后将当前的登陆用户名存储在session中,并且在后面的页面中显示当前登陆用户的用户名;
使用thymeleaf模板引擎从session取值的话可以直接使用 [[${session.key}]]
失败留在登录页面并且给出提示,添加一个标签提示用户名或者密码错误。
2:使用拦截器进行登陆校验
Springboot 模板引擎的默认跳转方式是转发,刷新的时候就会提交表单数据,
为了防止用户重复提交表单 ,在用户登陆成功之后可以使用重定向来控制,
但是使用重定向的话只要知道浏览器的地址就可以直接访问,而不需要进行登陆,这样的做法不安全;
此时,可以使用拦截器进行对请求的拦截来实现用户登陆的校验,只有登陆用户才能访问后面的资源,所有未登录的请求都到登陆页面。
实现方式:
实现拦截器接口HandlerInterceptor,实现这个接口必须要添加springmvc的依赖
添加方法preHandle, 在访问方法前面进行拦截;返回true则表示放行请求, 返回false 则表示拦截
判断session中是否存在已经登陆的用户,存在则放行,不存在则使用转发或者重定向跳转到登陆页面并给出提示:没有权限,请先登陆
写好的拦截器不会自动运行,必须要添加到拓展配置类中才会生效(就是我们的配置类),
springmvc 的拓展配置类要实现WebMvcConfigurer接口,接口中addInterceptors是springboot预留的添加拦截器的拓展方法;(ctrl + o 查看可以重写的方法)
重写方法后,调用addInterceptor(install)方法, 这个方法可以将我们自定义的拦截器实例添加到拓展类中;注意要在拓展配置类上添加配置类的注解声明。
addPathPatterns("/**") , 添加拦截的请求和自请求;
excludePathPatterns (),不拦截哪些请求;
registry.addInterceptor(new XXXInterceptor()).addPathPatterns("/**").excludePathPatterns("/","/index.html","/login.html", ”/register.html”,------);
3:restful风格uri说明
在做具体的功能之前,要统一请求的规则,本次练习采用restFul风格的请求!
URI : /资源名称/资源标识 , HTTP请求方式区分对资源CRUD操作
4:员工列表
用户登陆成功之后来到主页,当点击costomers时,会发出查询所有员工信息的请求,查询出所有信息之后展示所有信息
所有的员工信息在list.html中进行展示。根据上面得uri请求进行操作即可。
需要遍历返回的集合数据使用thymeleaf的语法为:
${emps} : 即将要遍历的容器,其实就是域对象中的 内容
emp: 遍历的时候,取出的每一个对象
取出对象中的属性
注意:
男女的显示问题,不能显示0或者1,要根据实际的情况进行,需要使用th:if 进行判断
生日的格式,显示年月日即可,可以使用thymeleaf为我们提供的对象进行格式化,语法:${#dates.format(date,'yyyy-MM-dd')},
语法是固定的,前面的#dates是对象,使用实际的值将大括号中的date替换掉就行,
3 、对象中还包含了其他对象,需要取值的话,一直点下去即可。
5:公共部分的抽取
对查询出的员工进行展示的时候发现,在list页面的顶部和左侧栏出现了问题,没有和刚刚的首页进行同步,
此时我们需要对练习中的 公共部分进行抽取,thymeleaf提供了相对应的方法。
语法:
~{templatename::selector} :模板名::选择器
~{templatename::fragmentname}: 模板名::片段名
如果使用th:insert等属性进行引入,可以不用写~{}: 行内写法可以加上:[[~{}]];[(~{})];
模板名的话习惯上使用页面名称。Thymeleaf 会使用自己的模板配置进行解析。
选择器一般使用id, id可以保证模板的唯一性。在使用的时候选择器使用的是基本选择器
如:th:replace="~{htmlName::#id}"
三种引入公共片段的th属性:
th:insert :将公共片段整个插入到声明引入的元素中
th:replace :将声明引入的元素替换为公共片段
th:include :将被引入的片段的内容包含进这个标签中
如:
6:添加员工信息
原来的素材中没有添加链接,可以在员工列表上面给出一个添加的链接,并且使用bootstrap的按钮样式进行美化,
点击添加员工信息时,其实不是直接到具体的页面,第一是因为页面在template下不能直接访问,第二是因为添加中有部门信息,不能在页面上写死;
正确的做法是点击添加到服务器端,然后查询所有的部门信息,然后将信息存储在请求域中,最后将请求转发到具体的添加页面中;
注意:
1、部门实际提交的是部门编号,name=department.id, value的具体值也是id,显示给用户看的应该是部门的名字,遍历内容放在option上。
2、进入添加页面需要注意的是日期的格式,springboot默认能解析的格式是yyyy/MM/dd,写其他的格式无法解析。
如果需要修改时间格式的话,可以修改默认的日期格式: spring.mvc . format . date : yyyy-MM-dd
7:修改
员工信息的修改分2部完成,第一是员工信息的回显,第二是修改保存
当点击修改按钮时,可以根据员工的id查询出员工的具体信息,然后将信息存储在请求域中,并转发到具体的页面上回显
注意
thymeleaf 模板引擎在拼接字符串的时候和以前的拼接有点区别,要取值之后在拼接,
如:th:href="@{/uri/}+${emp.id}", 如果最后传递的id是5,那么最后的请求是这样的:xxx/uri/5。+不能少,如果使用th:href的话则项目名可以不写
2 、服务器端在书写restful请求路径的时,id是直接拼接在后面的,如:@GetMapping("/emp/{id}") ,表示emp后面会传递一个id过来
3 、如果获取restful风格的参数,因为参数没有写key, 咱们可以使用注解来获取具体的值,如:@PathVariable("id") Integer id, 这样就可以获取url中传递的id了。
4 、数据回显的时候注意单选框、下拉框和日期。下拉框中的部门信息在查询员工信息的时候也要一起查询出来,回显的时候所有的部门信息也要进行回显
单选框可以使用th:checked="${emp.gender==0}", 当判断的结果为true的时候,会默认的选中。
下拉框可以使用th:selected="${dept.id==emp.department.id}",th:text="${dept.departmentName}" 和上面的类似,each写在option上。
判断的结果为true的时候进行回显,如果员工的部门编号等于部门的部门编号,则显示部门名称
时间的话可以使用模板引擎提供的对象进行格式化 th:text="${#dates.format(emp.birth,'yyyy-MM-dd')}"
5 、修改提交数据的时,action就是后台的映射地址,form表单无法直接填写put请求,一般的操作时,
1 )、form表单的method必须是post;
2 )、写一个隐藏的输入框input,name必须是: _method, value=“put”
这样就会以put的方式进行提交,服务器端可以使用@PutMapping("/emp")来接受对应的请求, 注意日期的格式。
8:删除:
点击删除的时候,删除当前用户,并返回列表页面
注意:删除的时候,需要使用delete方式的提交方式,具体使用和put是一样的
使用一个form表单将删除按钮包起来,
写1个影藏的input,使用delete方式
拼接form的action, 发送请求。
你可能感兴趣的:(spring,boot,java,spring)
Long类型前后端数据不一致
igotyback
前端
响应给前端的数据浏览器控制台中response中看到的Long类型的数据是正常的到前端数据不一致前后端数据类型不匹配是一个常见问题,尤其是当后端使用Java的Long类型(64位)与前端JavaScript的Number类型(最大安全整数为2^53-1,即16位)进行数据交互时,很容易出现精度丢失的问题。这是因为JavaScript中的Number类型无法安全地表示超过16位的整数。为了解决这个问
LocalDateTime 转 String
igotyback
java 开发语言
importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;publicclassMain{publicstaticvoidmain(String[]args){//获取当前时间LocalDateTimenow=LocalDateTime.now();//定义日期格式化器DateTimeFormatterformat
Linux下QT开发的动态库界面弹出操作(SDL2)
13jjyao
QT类 qt 开发语言 sdl2 linux
需求:操作系统为linux,开发框架为qt,做成需带界面的qt动态库,调用方为java等非qt程序难点:调用方为java等非qt程序,也就是说调用方肯定不带QApplication::exec(),缺少了这个,QTimer等事件和QT创建的窗口将不能弹出(包括opencv也是不能弹出);这与qt调用本身qt库是有本质的区别的思路:1.调用方缺QApplication::exec(),那么我们在接口
DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理
STU学生网页设计
网页设计 期末网页作业 html静态网页 html5期末大作业 网页设计 web大作业
️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程
【华为OD机试真题2023B卷 JAVA&JS】We Are A Team
若博豆
java 算法 华为 javascript
华为OD2023(B卷)机试题库全覆盖,刷题指南点这里WeAreATeam时间限制:1秒|内存限制:32768K|语言限制:不限题目描述:总共有n个人在机房,每个人有一个标号(1<=标号<=n),他们分成了多个团队,需要你根据收到的m条消息判定指定的两个人是否在一个团队中,具体的:1、消息构成为:abc,整数a、b分别代
关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript
二挡起步
web前端期末大作业 javascript html css 旅游 风景
⛵源码获取文末联系✈Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业|游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作|HTML期末大学生网页设计作业,Web大学生网页HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScrip
HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动
二挡起步
web前端期末大作业 web设计网页规划与设计 html css javascript dreamweaver 前端
Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作HTML期末大学生网页设计作业HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScript:做与用户的交互行为文章目录前端学习路线
node.js学习
小猿L
node.js node.js 学习 vim
node.js学习实操及笔记温故node.js,node.js学习实操过程及笔记~node.js学习视频node.js官网node.js中文网实操笔记githubcsdn笔记为什么学node.js可以让别人访问我们编写的网页为后续的框架学习打下基础,三大框架vuereactangular离不开node.jsnode.js是什么官网:node.js是一个开源的、跨平台的运行JavaScript的运行
SpringBlade dict-biz/list 接口 SQL 注入漏洞
文章永久免费只为良心
oracle 数据库
SpringBladedict-biz/list接口SQL注入漏洞POC:构造请求包查看返回包你的网址/api/blade-system/dict-biz/list?updatexml(1,concat(0x7e,md5(1),0x7e),1)=1漏洞概述在SpringBlade框架中,如果dict-biz/list接口的后台处理逻辑没有正确地对用户输入进行过滤或参数化查询(PreparedSta
Java 重写(Override)与重载(Overload)
叨唧唧的
Java重写(Override)与重载(Overload)重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如:父类的一个方法申明了一个检查异常IOExceptio
简单了解 JVM
记得开心一点啊
jvm
目录♫什么是JVM♫JVM的运行流程♫JVM运行时数据区♪虚拟机栈♪本地方法栈♪堆♪程序计数器♪方法区/元数据区♫类加载的过程♫双亲委派模型♫垃圾回收机制♫什么是JVMJVM是JavaVirtualMachine的简称,意为Java虚拟机。虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统(如:JVM、VMwave、VirtualBox)。JVM和其他两个虚拟机
1分钟解决 -bash: mvn: command not found,在Centos 7中安装Maven
Energet!c
开发语言
1分钟解决-bash:mvn:commandnotfound,在Centos7中安装Maven检查Java环境1下载Maven2解压Maven3配置环境变量4验证安装5常见问题与注意事项6总结检查Java环境Maven依赖Java环境,请确保系统已经安装了Java并配置了环境变量。可以通过以下命令检查:java-version如果未安装,请先安装Java。1下载Maven从官网下载:前往Apach
Java企业面试题3
马龙强_
java
1.break和continue的作用(智*图)break:用于完全退出一个循环(如for,while)或一个switch语句。当在循环体内遇到break语句时,程序会立即跳出当前循环体,继续执行循环之后的代码。continue:用于跳过当前循环体中剩余的部分,并开始下一次循环。如果是在for循环中使用continue,则会直接进行条件判断以决定是否执行下一轮循环。2.if分支语句和switch分
JVM、JRE和 JDK:理解Java开发的三大核心组件
Y雨何时停T
Java java
Java是一门跨平台的编程语言,它的成功离不开背后强大的运行环境与开发工具的支持。在Java的生态中,JVM(Java虚拟机)、JRE(Java运行时环境)和JDK(Java开发工具包)是三个至关重要的核心组件。本文将探讨JVM、JDK和JRE的区别,帮助你更好地理解Java的运行机制。1.JVM:Java虚拟机(JavaVirtualMachine)什么是JVM?JVM,即Java虚拟机,是Ja
Java面试题精选:消息队列(二)
芒果不是芒
Java面试题精选 java kafka
一、Kafka的特性1.消息持久化:消息存储在磁盘,所以消息不会丢失2.高吞吐量:可以轻松实现单机百万级别的并发3.扩展性:扩展性强,还是动态扩展4.多客户端支持:支持多种语言(Java、C、C++、GO、)5.KafkaStreams(一个天生的流处理):在双十一或者销售大屏就会用到这种流处理。使用KafkaStreams可以快速的把销售额统计出来6.安全机制:Kafka进行生产或者消费的时候会
白骑士的Java教学基础篇 2.5 控制流语句
白骑士所长
Java 教学 java 开发语言
欢迎继续学习Java编程的基础篇!在前面的章节中,我们了解了Java的变量、数据类型和运算符。接下来,我们将探讨Java中的控制流语句。控制流语句用于控制程序的执行顺序,使我们能够根据特定条件执行不同的代码块,或重复执行某段代码。这是编写复杂程序的基础。通过学习这一节内容,你将掌握如何使用条件语句和循环语句来编写更加灵活和高效的代码。条件语句条件语句用于根据条件的真假来执行不同的代码块。if语句‘
python语法——三目运算符
HappyRocking
python python 三目运算符
在java中,有三目运算符,如:intc=(a>b)?a:b表示c取两者中的较大值。但是在python,不能直接这样使用,估计是因为冒号在python有分行的关键作用。那么在python中,如何实现类似功能呢?可以使用ifelse语句,也是一行可以完成,格式为:aifbelsec表示如果b为True,则表达式等于a,否则等于c。如:c=(aif(a>b)elseb)同样是完成了取最大值的功能。
spring如何整合druid连接池?
惜.己
spring spring junit 数据库 java idea 后端 xml
目录spring整合druid连接池1.新建maven项目2.新建mavenModule3.导入相关依赖4.配置log4j2.xml5.配置druid.xml1)xml中如何引入properties2)下面是配置文件6.准备jdbc.propertiesJDBC配置项解释7.配置druid8.测试spring整合druid连接池1.新建maven项目打开IDE(比如IntelliJIDEA,Ecl
ArrayList 源码解析
程序猿进阶
Java基础 ArrayList List java 面试 性能优化 架构设计 idea
ArrayList是Java集合框架中的一个动态数组实现,提供了可变大小的数组功能。它继承自AbstractList并实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量capacity,表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量。当向容器中添
Java爬虫框架(一)--架构设计
狼图腾-狼之传说
java 框架 java 任务 html解析器 存储 电子商务
一、架构图那里搜网络爬虫框架主要针对电子商务网站进行数据爬取,分析,存储,索引。爬虫:爬虫负责爬取,解析,处理电子商务网站的网页的内容数据库:存储商品信息索引:商品的全文搜索索引Task队列:需要爬取的网页列表Visited表:已经爬取过的网页列表爬虫监控平台:web平台可以启动,停止爬虫,管理爬虫,task队列,visited表。二、爬虫1.流程1)Scheduler启动爬虫器,TaskMast
Java:爬虫框架
dingcho
Java java 爬虫
一、ApacheNutch2【参考地址】Nutch是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。Nutch致力于让每个人能很容易,同时花费很少就可以配置世界一流的Web搜索引擎.为了完成这一宏伟的目标,Nutch必须能够做到:每个月取几十亿网页为这些网页维护一个索引对索引文件进行每秒上千次的搜索提供高质量的搜索结果简单来说Nutch支持分
python怎么将png转为tif_png转tif
weixin_39977276
发国外的文章要求图片是tif,cmyk色彩空间的。大小尺寸还有要求。比如网上大神多,找到了一段代码,感谢!https://www.jianshu.com/p/ec2af4311f56https://github.com/KevinZc007/image2Tifimportjava.awt.image.BufferedImage;importjava.io.File;importjava.io.Fi
SpringCloudAlibaba—Sentinel(限流)
菜鸟爪哇
前言:自己在学习过程的记录,借鉴别人文章,记录自己实现的步骤。借鉴文章:https://blog.csdn.net/u014494148/article/details/105484410Sentinel介绍Sentinel诞生于阿里巴巴,其主要目标是流量控制和服务熔断。Sentinel是通过限制并发线程的数量(即信号隔离)来减少不稳定资源的影响,而不是使用线程池,省去了线程切换的性能开销。当资源
springboot+vue项目实战一-创建SpringBoot简单项目
苹果酱0567
面试题汇总与解析 spring boot 后端 java 中间件 开发语言
这段时间抽空给女朋友搭建一个个人博客,想着记录一下建站的过程,就当做笔记吧。虽然复制zjblog只要一个小时就可以搞定一个网站,或者用cms系统,三四个小时就可以做出一个前后台都有的网站,而且想做成啥样也都行。但是就是要从新做,自己做的意义不一样,更何况,俺就是专门干这个的,嘿嘿嘿要做一个网站,而且从零开始,首先呢就是技术选型了,经过一番思量决定选择-SpringBoot做后端,前端使用Vue做一
JavaScript 中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)
跳房子的前端
前端面试 javascript 开发语言 ecmascript
在JavaScript中,深拷贝(DeepCopy)和浅拷贝(ShallowCopy)是用于复制对象或数组的两种不同方法。了解它们的区别和应用场景对于避免潜在的bugs和高效地处理数据非常重要。以下是对深拷贝和浅拷贝的详细解释,包括它们的概念、用途、优缺点以及实现方式。1.浅拷贝(ShallowCopy)概念定义:浅拷贝是指创建一个新的对象或数组,其中包含了原对象或数组的基本数据类型的值和对引用数
JAVA·一个简单的登录窗口
MortalTom
java 开发语言 学习
文章目录概要整体架构流程技术名词解释技术细节资源概要JavaSwing是Java基础类库的一部分,主要用于开发图形用户界面(GUI)程序整体架构流程新建项目,导入sql.jar包(链接放在了文末),编译项目并运行技术名词解释一、特点丰富的组件提供了多种可视化组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、下拉列表(JComboBox)等,可以满足不同的界面设计
Spring MVC 全面指南:从入门到精通的详细解析
一杯梅子酱
技术栈学习 spring mvc java
引言:SpringMVC,作为Spring框架的一个重要模块,为构建Web应用提供了强大的功能和灵活性。无论是初学者还是有一定经验的开发者,掌握SpringMVC都将显著提升你的Web开发技能。本文旨在为初学者提供一个全面且易于理解的学习路径,通过详细的知识点分析和实际案例,帮助你快速上手SpringMVC,让学习过程既深刻又高效。一、SpringMVC简介1.1什么是SpringMVC?Spri
Spring Boot中实现跨域请求
BABA8891
spring boot 后端 java
在SpringBoot中实现跨域请求(CORS,Cross-OriginResourceSharing)可以通过多种方式,以下是几种常见的方法:1.使用@CrossOrigin注解在SpringBoot中,你可以在控制器或者具体的请求处理方法上使用@CrossOrigin注解来允许跨域请求。在控制器上应用:importorg.springframework.web.bind.annotation.
WebMagic:强大的Java爬虫框架解析与实战
Aaron_945
Java java 爬虫 开发语言
文章目录引言官网链接WebMagic原理概述基础使用1.添加依赖2.编写PageProcessor高级使用1.自定义Pipeline2.分布式抓取优点结论引言在大数据时代,网络爬虫作为数据收集的重要工具,扮演着不可或缺的角色。Java作为一门广泛使用的编程语言,在爬虫开发领域也有其独特的优势。WebMagic是一个开源的Java爬虫框架,它提供了简单灵活的API,支持多线程、分布式抓取,以及丰富的
博客网站制作教程
2401_85194651
java maven
首先就是技术框架:后端:Java+SpringBoot数据库:MySQL前端:Vue.js数据库连接:JPA(JavaPersistenceAPI)1.项目结构blog-app/├──backend/│├──src/main/java/com/example/blogapp/││├──BlogApplication.java││├──config/│││└──DatabaseConfig.java
矩阵求逆(JAVA)利用伴随矩阵
qiuwanchi
利用伴随矩阵求逆矩阵
package gaodai.matrix;
import gaodai.determinant.DeterminantCalculation;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 矩阵求逆(利用伴随矩阵)
* @author 邱万迟
单例(Singleton)模式
aoyouzi
单例 模式 Singleton
3.1 概述 如果要保证系统里一个类最多只能存在一个实例时,我们就需要单例模式。这种情况在我们应用中经常碰到,例如缓存池,数据库连接池,线程池,一些应用服务实例等。在多线程环境中,为了保证实例的唯一性其实并不简单,这章将和读者一起探讨如何实现单例模式。 3.2
[开源与自主研发]就算可以轻易获得外部技术支持,自己也必须研发
comsci
开源
现在国内有大量的信息技术产品,都是通过盗版,免费下载,开源,附送等方式从国外的开发者那里获得的。。。。。。
虽然这种情况带来了国内信息产业的短暂繁荣,也促进了电子商务和互联网产业的快速发展,但是实际上,我们应该清醒的看到,这些产业的核心力量是被国外的
页面有两个frame,怎样点击一个的链接改变另一个的内容
Array_06
UI XHTML
<a src="地址" targets="这里写你要操作的Frame的名字" />搜索
然后你点击连接以后你的新页面就会显示在你设置的Frame名字的框那里
targerts="",就是你要填写目标的显示页面位置
=====================
例如:
<frame src=&
Struts2实现单个/多个文件上传和下载
oloz
文件上传 struts
struts2单文件上传:
步骤01:jsp页面
<!--在进行文件上传时,表单提交方式一定要是post的方式,因为文件上传时二进制文件可能会很大,还有就是enctype属性,这个属性一定要写成multipart/form-data,不然就会以二进制文本上传到服务器端-->
<form action="fileUplo
推荐10个在线logo设计网站
362217990
logo
在线设计Logo网站。
1、http://flickr.nosv.org(这个太简单)
2、http://www.logomaker.com/?source=1.5770.1
3、http://www.simwebsol.com/ImageTool
4、http://www.logogenerator.com/logo.php?nal=1&tpl_catlist[]=2
5、ht
jsp上传文件
香水浓
jsp fileupload
1. jsp上传
Notice:
1. form表单 method 属性必须设置为 POST 方法 ,不能使用 GET 方法
2. form表单 enctype 属性需要设置为 multipart/form-data
3. form表单 action 属性需要设置为提交到后台处理文件上传的jsp文件地址或者servlet地址。例如 uploadFile.jsp 程序文件用来处理上传的文
我的架构经验系列文章 - 前端架构
agevs
JavaScript Web 框架 UI jQuer
框架层面:近几年前端发展很快,前端之所以叫前端因为前端是已经可以独立成为一种职业了,js也不再是十年前的玩具了,以前富客户端RIA的应用可能会用flash/flex或是silverlight,现在可以使用js来完成大部分的功能,因此js作为一门前端的支撑语言也不仅仅是进行的简单的编码,越来越多框架性的东西出现了。越来越多的开发模式转变为后端只是吐json的数据源,而前端做所有UI的事情。MVCMV
android ksoap2 中把XML(DataSet) 当做参数传递
aijuans
android
我的android app中需要发送webservice ,于是我使用了 ksop2 进行发送,在测试过程中不是很顺利,不能正常工作.我的web service 请求格式如下
[html]
view plain
copy
<Envelope xmlns="http://schemas.
使用Spring进行统一日志管理 + 统一异常管理
baalwolf
spring
统一日志和异常管理配置好后,SSH项目中,代码以往散落的log.info() 和 try..catch..finally 再也不见踪影!
统一日志异常实现类:
[java]
view plain
copy
package com.pilelot.web.util;
impor
Android SDK 国内镜像
BigBird2012
android sdk
一、镜像地址:
1、东软信息学院的 Android SDK 镜像,比配置代理下载快多了。
配置地址, http://mirrors.neusoft.edu.cn/configurations.we#android
2、北京化工大学的:
IPV4:ubuntu.buct.edu.cn
IPV4:ubuntu.buct.cn
IPV6:ubuntu.buct6.edu.cn
HTML无害化和Sanitize模块
bijian1013
JavaScript AngularJS Linky Sanitize
一.ng-bind-html、ng-bind-html-unsafe
AngularJS非常注重安全方面的问题,它会尽一切可能把大多数攻击手段最小化。其中一个攻击手段是向你的web页面里注入不安全的HTML,然后利用它触发跨站攻击或者注入攻击。
考虑这样一个例子,假设我们有一个变量存
[Maven学习笔记二]Maven命令
bit1129
maven
mvn compile
compile编译命令将src/main/java和src/main/resources中的代码和配置文件编译到target/classes中,不会对src/test/java中的测试类进行编译
MVN编译使用
maven-resources-plugin:2.6:resources
maven-compiler-plugin:2.5.1:compile
&nbs
【Java命令二】jhat
bit1129
Java命令
jhat用于分析使用jmap dump的文件,,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。 jhat默认开启监听端口7000的HTTP服务,jhat是Java Heap Analysis Tool的缩写
1. 用法:
[hadoop@hadoop bin]$ jhat -help
Usage: jhat [-stack <bool&g
JBoss 5.1.0 GA:Error installing to Instantiated: name=AttachmentStore state=Desc
ronin47
进到类似目录 server/default/conf/bootstrap,打开文件 profile.xml找到: Xml代码<bean
name="AttachmentStore"
class="org.jboss.system.server.profileservice.repository.AbstractAtta
写给初学者的6条网页设计安全配色指南
brotherlamp
UI ui自学 ui视频 ui教程 ui资料
网页设计中最基本的原则之一是,不管你花多长时间创造一个华丽的设计,其最终的角色都是这场秀中真正的明星——内容的衬托
我仍然清楚地记得我最早的一次美术课,那时我还是一个小小的、对凡事都充满渴望的孩子,我摆放出一大堆漂亮的彩色颜料。我仍然记得当我第一次看到原色与另一种颜色混合变成第二种颜色时的那种兴奋,并且我想,既然两种颜色能创造出一种全新的美丽色彩,那所有颜色
有一个数组,每次从中间随机取一个,然后放回去,当所有的元素都被取过,返回总共的取的次数。写一个函数实现。复杂度是什么。
bylijinnan
java 算法 面试
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;
/**
* http://weibo.com/1915548291/z7HtOF4sx
* #面试题#有一个数组,每次从中间随机取一个,然后放回去,当所有的元素都被取过,返回总共的取的次数。
* 写一个函数实现。复杂度是什么
struts2获得request、session、application方式
chiangfai
application
1、与Servlet API解耦的访问方式。
a.Struts2对HttpServletRequest、HttpSession、ServletContext进行了封装,构造了三个Map对象来替代这三种对象要获取这三个Map对象,使用ActionContext类。
----->
package pro.action;
import java.util.Map;
imp
改变python的默认语言设置
chenchao051
python
import sys
sys.getdefaultencoding()
可以测试出默认语言,要改变的话,需要在python lib的site-packages文件夹下新建:
sitecustomize.py, 这个文件比较特殊,会在python启动时来加载,所以就可以在里面写上:
import sys
sys.setdefaultencoding('utf-8')
&n
mysql导入数据load data infile用法
daizj
mysql 导入数据
我们常常导入数据!mysql有一个高效导入方法,那就是load data infile 下面来看案例说明
基本语法:
load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[fields
[terminated by't']
[OPTI
phpexcel导入excel表到数据库简单入门示例
dcj3sjt126com
PHP Excel
跟导出相对应的,同一个数据表,也是将phpexcel类放在class目录下,将Excel表格中的内容读取出来放到数据库中
<?php
error_reporting(E_ALL);
set_time_limit(0);
?>
<html>
<head>
<meta http-equiv="Content-Type"
22岁到72岁的男人对女人的要求
dcj3sjt126com
22岁男人对女人的要求是:一,美丽,二,性感,三,有份具品味的职业,四,极有耐性,善解人意,五,该聪明的时候聪明,六,作小鸟依人状时尽量自然,七,怎样穿都好看,八,懂得适当地撒娇,九,虽作惊喜反应,但看起来自然,十,上了床就是个无条件荡妇。 32岁的男人对女人的要求,略作修定,是:一,入得厨房,进得睡房,二,不必服侍皇太后,三,不介意浪漫蜡烛配盒饭,四,听多过说,五,不再傻笑,六,懂得独
Spring和HIbernate对DDM设计的支持
e200702084
DAO 设计模式 spring Hibernate 领域模型
A:数据访问对象
DAO和资源库在领域驱动设计中都很重要。DAO是关系型数据库和应用之间的契约。它封装了Web应用中的数据库CRUD操作细节。另一方面,资源库是一个独立的抽象,它与DAO进行交互,并提供到领域模型的“业务接口”。
资源库使用领域的通用语言,处理所有必要的DAO,并使用领域理解的语言提供对领域模型的数据访问服务。
NoSql 数据库的特性比较
geeksun
NoSQL
Redis 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。目前由VMware主持开发工作。
1. 数据模型
作为Key-value型数据库,Redis也提供了键(Key)和值(Value)的映射关系。除了常规的数值或字符串,Redis的键值还可以是以下形式之一:
Lists (列表)
Sets
使用 Nginx Upload Module 实现上传文件功能
hongtoushizi
nginx
转载自: http://www.tuicool.com/wx/aUrAzm
普通网站在实现文件上传功能的时候,一般是使用Python,Java等后端程序实现,比较麻烦。Nginx有一个Upload模块,可以非常简单的实现文件上传功能。此模块的原理是先把用户上传的文件保存到临时文件,然后在交由后台页面处理,并且把文件的原名,上传后的名称,文件类型,文件大小set到页面。下
spring-boot-web-ui及thymeleaf基本使用
jishiweili
spring thymeleaf
视图控制层代码demo如下:
@Controller
@RequestMapping("/")
public class MessageController {
private final MessageRepository messageRepository;
@Autowired
public MessageController(Mes
数据源架构模式之活动记录
home198979
PHP 架构 活动记录 数据映射
hello!架构
一、概念
活动记录(Active Record):一个对象,它包装数据库表或视图中某一行,封装数据库访问,并在这些数据上增加了领域逻辑。
对象既有数据又有行为。活动记录使用直截了当的方法,把数据访问逻辑置于领域对象中。
二、实现简单活动记录
活动记录在php许多框架中都有应用,如cakephp。
<?php
/**
* 行数据入口类
*
Linux Shell脚本之自动修改IP
pda158
linux centos Debian 脚本
作为一名
Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名、ip信息、网关等配置。修改成特定的主机名在维护和管理方面也比较方便。如下脚本用途为:修改ip和主机名等相关信息,可以根据实际需求修改,举一反三!
#!/bin/sh
#auto Change ip netmask ga
开发环境搭建
独浮云
eclipse jdk tomcat
最近在开发过程中,经常出现MyEclipse内存溢出等错误,需要重启的情况,好麻烦。对于一般的JAVA+TOMCAT项目开发,其实没有必要使用重量级的MyEclipse,使用eclipse就足够了。尤其是开发机器硬件配置一般的人。
&n
操作日期和时间的工具类
vipbooks
工具类
大家好啊,好久没有来这里发文章了,今天来逛逛,分享一篇刚写不久的操作日期和时间的工具类,希望对大家有所帮助。
/*
* @(#)DataFormatUtils.java 2010-10-10
*
* Copyright 2010 BianJing,All rights reserved.
*/
package test;
impor