使用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)
华为OD机试 - 单向链表中间节点(Java & JS & Python & C & C++)
华为OD题库
华为od 链表 java
须知哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持文章目录须知题目描述输出描述解析代码题目描述给定一个单链表L,请编写程序输出L中间结点保存的数据。如果有两个中间结点,则输出第二个中间结点保存的数据。例如:给定L为1→7→5,则输出应该为7;给定L为1→2→3→4,则输出应该为3;输入描述每个输入包含1个测试用例。每个测试用例:第一行给出链表首结点的地址、结点总
学习JavaEE的日子 Day32 线程池
A 北枝
学习JavaEE 学习 java-ee java 线程池
Day32线程池1.引入一个线程完成一项任务所需时间为:创建线程时间-Time1线程中执行任务的时间-Time2销毁线程时间-Time32.为什么需要线程池(重要)线程池技术正是关注如何缩短或调整Time1和Time3的时间,从而提高程序的性能。项目中可以把Time1,T3分别安排在项目的启动和结束的时间段或者一些空闲的时间段线程池不仅调整Time1,Time3产生的时间段,而且它还显著减少了创建
SpringMVC设置全局异常处理器
水岸齐天
java spring
文章目录背景分析使用@ControllerAdvice(@RestControllerAdvice)+@ExceptionHandler实现全局异常全局异常处理-多个处理器匹配顺序存在一个类中存在不同的类中对于过滤器和拦截器中的异常,有两种思路可以考虑背景在项目中我们有需求做一个全局异常处理,来规范所有出去的异常信息。参考:官方文档分析首先ControllerAdvice(RestControll
使用多线程的方式模拟高并发请求接口,用于自测接口的稳定性【项目】
还算善良_
私有代码库 工具类 java list 数据结构
packagecom.gitee.taven.test;importcom.gitee.taven.ApiResult;importcom.gitee.taven.aop.RepeatSubmitAspect;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.an
springboot集成logback-spring.xml文件
RT_0114
SpringBoot spring boot spring logback
彩色日志日志分debug和error文件输出,方便开发人员运维日志限制最大保管天数日志限制总量大小占用量GB日志限制单个文件大小MB日志显示最大保留天数屏蔽没用的日志${CONSOLE_LOG_PATTERN}${log.path}/debug.log${log.path}/%d{yyyy-MM-dd,aux}/debug.%d{yyyy-MM-dd}.%i.log.gz1024MB50GB365
请简单介绍一下Shiro框架是什么?Shiro在Java安全领域的主要作用是什么?Shiro主要提供了哪些安全功能?
AaronWang94
shiro java java 安全 开发语言
请简单介绍一下Shiro框架是什么?Shiro框架是一个强大且灵活的开源安全框架,为Java应用程序提供了全面的安全解决方案。它主要用于身份验证、授权、加密和会话管理等功能,可以轻松地集成到任何JavaWeb应用程序中,并提供了易于理解和使用的API,使开发人员能够快速实现安全特性。Shiro的核心组件包括Subject、SecurityManager和Realms。Subject代表了当前与应用
通俗易懂:什么是Java虚拟机(JVM)?它的主要作用是什么?
大龄下岗程序员
mysql java mysql spring
Java虚拟机(JavaVirtualMachine,JVM)是一种软件实现的抽象计算机,它负责执行Java字节码(Bytecode)。Java程序并不是直接在物理计算机上运行,而是先由Java编译器将源代码编译成与平台无关的字节码,然后由JVM负责读取字节码并在实际硬件架构上运行。JVM的主要作用包括以下几个方面:1.跨平台性-JVM是Java语言“一次编写,到处运行”(WriteOnce,Ru
3、JavaWeb-Ajax/Axios-前端工程化-Element
所谓远行Misnearch
# JavaWeb 前端 ajax elementui java 前端框架
P34Ajax介绍Ajax:AsynchroousJavaScriptAndXML,异步的JS和XMLJS网页动作,XML一种标记语言,存储数据,作用:数据交换:通过Ajax给服务器发送请求,并获取服务器响应的数据异步交互:在不重新加载整个页面的情况下,与服务器交换数据并实现更新部分网页的技术,例如:搜索联想、用户名是否可用的校验等等。同步与异步:同步:服务器在处理中客户端要处于等待状态,输入域名
eclipse导入项目 warning报错 org.springframework.ide.eclipse.core.springnature
zhangfeng1133
ide eclipse java
报错org.springframework.ide.eclipse.core.springnature报错信息"org.springframework.ide.eclipse.core.springnature"通常表示EclipseIDE中与Spring框架集成的插件出现了问题。这个错误可能是因为SpringIDE插件没有正确安装或配置,或者Eclipse的更新过程中出现了问题。解决方法:确认S
枚举使用笔记
万变不离其宗_8
项目笔记 笔记
1.java枚举怎么放在方法上面的注释里面/***保存*@paramuserId用户id*@paramtype见枚举{@linkcom.common.enums.TypeEnum}*@return*/voidsave(LonguserId,Stringtype);
linux安装docker及docker-compose 部署spring boot项目
时而有事儿
docker linux docker linux spring boot
linux系统环境:centos5.14本篇描述的是在centos系统版本下安装docker,如果是ubuntu版本,请看这篇文章:linuxubuntu20安装docker和docker-compose-CSDN博客正文:安装docker和docker-compose安装docker---------运行命名等待安装完成遇到选择直接输入yyuminstall-yyum-utilsdevice-m
Python dict字符串转json对象,小数精度丢失问题
朝如青丝 暮成雪
json python
一前言JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,dict是Python的一种数据格式。本篇介绍一个float数据转换时精度丢失的案例。二问题描述importjsontest_str1='{"π":3.1415926535897932384626433832795028841971}'test_str2='{"value":10.00000}'print
java实体中返回前端的double类型四舍五入(格式化)
婲落ヽ紅顏誶
java
根据业务,需要通过后端给前端返回部分double类型的数值,一般需要保留两位小数,使用jackson转换对象packagecom.ruoyi.common.core.config;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackson.databind.JsonSerializer;importcom.f
Java中HashMap底层数据结构及主要参数?
山间漫步人生路
java 数据结构 开发语言
在Java中,HashMap的底层数据结构主要基于数组和链表,同时在Java8及以后的版本中,当链表长度超过一定阈值时,链表会转换为红黑树来优化性能。这种结构结合了数组和链表的优点,既提供了快速的随机访问,又允许动态地扩展存储桶的大小。HashMap的主要参数包括:初始容量(InitialCapacity):这是HashMap在创建时设定的桶数组的大小。默认值为16。这个值可以根据预计存储的键值对
Java学习笔记01
.wsy.
日常 java 学习 笔记
1.1Java简介Java的前身是Oak,詹姆斯·高斯林是java之父。1.2Java体系Java是一种与平台无关的语言,其源代码可以被编译成一种结构中立的中间文件(.class,字节码文件)于Java虚拟机上运行。1.2.3专有名词JDK提供编译、运行Java程序所需要的种种工具及资源。JRE是运行Java所依赖的环境的集合。JVM是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功
Java回溯知识点(含面试大厂题和源码)
一成码农
java 面试 开发语言
回溯算法是一种通过遍历所有可能的候选解来寻找所有解的算法,如果候选解被确认不是一个解(或至少不是最后一个解),回溯算法会通过在上一步进行一些变化来丢弃这个解,即“回溯”并尝试另一个候选解。回溯法通常用递归方法来实现,在解决排列、组合、选择问题时非常有效。回溯算法的核心要点:路径:也就是已经做出的选择。选择列表:也就是你当前可以做的选择。结束条件:也就是到达决策树底层,无法再做出选择的条件。回溯算法
Azkaban各种类型的Job编写
__元昊__
一、概述原生的Azkaban支持的plugin类型有以下这些:command:Linuxshell命令行任务gobblin:通用数据采集工具hadoopJava:运行hadoopMR任务java:原生java任务hive:支持执行hiveSQLpig:pig脚本任务spark:spark任务hdfsToTeradata:把数据从hdfs导入TeradatateradataToHdfs:把数据从Te
java基础相关面试题详细总结
。。。。。96
java 开发语言
1.Java中的数据类型有哪些?答:Java中的数据类型包括基本数据类型(如整数、浮点数、字符等)和引用数据类型(如类、接口、数组等)。2.什么是面向对象编程(OOP)?答:面向对象编程是一种编程范式,它将数据和对数据的操作封装在一起,形成对象。通过对象之间的交互来实现程序的功能。3.解释类和对象的关系。答:类是对象的抽象描述,而对象是类的具体实例。一个类可以创建多个对象,每个对象都具有类中定义的
Thinkphp - 详细实现网站系统登录功能,附带 Mysql 数据库设置、Web 前端展示界面、信息校验等(详细代码,即设计过程)
王佳斌
+ Thinkphp mysql 前端 数据库
前言登录功能,是我们几乎开发每个系统都必须的模块。登录功能设计思路,主要包括几个方面。用户输入网址展示登录页面用户输入用户名,密码等点击登录进行信息校验校验通过之后,记录用户登录信息,跳转指定页面用户校验失败,提示失败信息页面目录具体功能实现为了快速搭建可用、美观的页面,我们采用一个比较成熟的前端框架Bootstrap。下面我们到Bootstrap的官网Bootsrap官网下载bootstrap。
javascript 日期转换为时间戳,时间戳转换为日期的函数
cdcdhj
javascript学习日记 javascript 开发语言 ecmascript
日期转化为时间戳,主要用valueOf()来进行转化为毫秒时间戳,getTime()IOS系统无法解析转换,所以都有valueOf()letgetTimestampOrDate=function(timestamp){lettimeStamp='';constregex=/^\d{4}(-|\/)\d{2}(-|\/)\d{2}$/;constregex2=/^\d{4}(-|\/)\d{2}(-
Java面试题:解释JVM的内存结构,并描述堆、栈、方法区在内存结构中的角色和作用,Java中的多线程是如何实现的,Java垃圾回收机制的基本原理,并讨论常见的垃圾回收算法
杰哥在此
Java系列 java jvm 算法 面试
Java内存模型与多线程的深入探讨在Java的世界里,内存模型和多线程是开发者必须掌握的核心知识点。它们不仅关系到程序的性能和稳定性,还直接影响到系统的可扩展性和可靠性。下面,我将通过三个面试题,带领大家深入理解Java内存模型、多线程以及并发编程的相关原理和实践。面试题一:请解释JVM的内存结构,并描述堆、栈、方法区在内存结构中的角色和作用。关注点:JVM内存结构的基本组成堆、栈、方法区的功能和
COMP315 JavaScript Cloud Computing for E Commerce
zhuyu0206girl
javascript 开发语言 ecmascript
Assignment1:Javascript1IntroductionAcommontaskincloudcomputingisdatacleaning,whichistheprocessoftakinganinitialdatasetthatmaycontainerroneousorincompletedata,andremovingorfixingthoseelementsbeforeform
JSON与AJAX:网页交互的利器
入冉心
json ajax 前端
在现代Web开发中,JSON(JavaScriptObjectNotation)和AJAX(AsynchronousJavaScriptandXML)是两项不可或缺的技术。它们共同为网页提供了动态、实时的数据交互能力,为用户带来了更加流畅和丰富的体验。本文将详细介绍JSON和AJAX的概念、原理,并通过代码示例展示它们在实际开发中的应用。一、JSON:轻量级的数据交换格式JSON是一种轻量级的数据
程序员开发技术整理
laizhixue
学习 前端框架
前端技术:vue-前端框架element-前端框架bootstrap-前端框架echarts-图标组件C#后端技术:webservice:soap架构:简单的通信协议,用于服务通信ORM框架:对象关系映射,如EF:对象实体模型,是ado.net中的应用技术soap服务通讯:xml通讯ado.net:OAuth2:登录授权认证:Token认证:JWT:jsonwebtokenJava后端技术:便捷工
SAP Spartacus的Component映射
JerryWang_汪子熙
Spartacus默认的购物车界面:https://github.com/SAP/spartacus-bootcamp/blob/master/sparta0/src/app/components/cart.component.ts新建一个CartComponent,对Spartacus标准的CartDetailsComponent进行扩展:import{Component}from'@angul
javascript的数据类型及转换
田小田txt
一、JavaScript数据类型:共有string,number,boolean,object,function五种数据类型;其中Object,Date,Array为对象型;2个不包含任何值的数据类型:null,undefined。二、Typeof查看数据类型:typeof"John"//返回stringtypeof3.14//返回numbertypeofNaN//返回numbertypeoffa
java线程之Lock的使用
dimdark
目标:大致介绍一下java.util.concurrent.locks包下的类,接口及其常用方法1.Lock接口Lock接口使用Lock接口的最佳模式:publicvoidmethod()throwInterruptedException{try{lock.lock();//lock.lockUninterruptibly();}finally{lock.unlock();}}用户必须手动释放Lo
第六届蓝桥杯大赛软件赛省赛Java 大学C组题解
爱跑步的程序员~
刷题 蓝桥杯 省赛
文章目录A隔行变色思路解题方法复杂度CodeB立方尾不变思路解题方法复杂度CodeC无穷分数思路解题方法复杂度CodeD奇妙的数字思路解题方法复杂度CodeE移动距离思路解题方法复杂度CodeF垒骰子思路解题方法复杂度CodeA隔行变色思路这是一个简单的计数问题。我们需要找出21到50之间的奇数数量。奇数行将被染成蓝色,偶数行将被染成白色。解题方法我们可以使用一个for循环从21遍历到50,然后使
Java学习笔记04:Java_数组
JasonYangQ
Java java
文章目录1.数组1.1数组介绍1.2数组的定义格式1.2.1第一种格式1.2.2第二种格式1.3数组的动态初始化1.3.1什么是动态初始化1.3.2动态初始化格式1.3.3动态初始化格式详解1.4数组元素访问1.4.1什么是索引1.4.2访问数组元素格式1.4.3示例代码1.5内存分配1.5.1内存概述1.5.2java中的内存分配1.9数组的静态初始化1.9.1什么是静态初始化1.9.2静态初始
【设计模式】Java 设计模式之桥接模式(Bridge)
新手村长
Java 设计模式 设计模式 java 桥接模式
桥接模式(BridgePattern)是结构型设计模式的一种,它主要解决的是抽象部分与实现部分的解耦问题,使得两者可以独立变化。这种类型的设计模式属于结构型模式,因为该模式涉及如何组合接口和它们的实现。将抽象部分与实现部分分离,使它们都可以独立地变化。一、桥接模式概述桥接模式的主要思想是将抽象与实现进行解耦,使得二者可以独立进行变化。在桥接模式中,抽象部分和实现部分被分离出来,抽象部分定义了一个抽
矩阵求逆(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