ssm整合
源码GitHub地址
导包整的的第一步…先导包
Spring
1234567891011121314151617181920212223AOP增强com.springsource.net.sf.cglib-2.2.0.jarcom.springsource.org.aopalliance-1.0.0.jarcom.springsource.org.aspectj.weaver-1.6.8.RELEASE.jarAOP核心spring-aspects-4.0.0.RELEASE.jarIOC核心包commons-logging-1.1.3.jarspring-aop-4.0.0.RELEASE.jarspring-beans-4.0.0.RELEASE.jarspring-context-4.0.0.RELEASE.jarspring-core-4.0.0.RELEASE.jarspring-expression-4.0.0.RELEASE.jarspring-tx-4.0.0.RELEASE.jar测试核心包spring-test-4.0.0.RELEASE.jarJDBC核心包sp ...
SpringMVC中文字符乱码
问题使用SpringMVC在返回一个字符串时发生了中文乱码问题。produces属性无效
123456789@RequestMapping(value = "/nihao", produces = "text/plain;charset=UTF-8")@ResponseBodypublic String hello(HttpServletResponse response) throws UnsupportedEncodingException { User user = new User(); user.setSex("男"); user.setName("Clover"); user.setAge(19); return user.toString();}
12345678910111213HTTP/1.1 200 OKServer: Apache-Coyote/1.1Content-Type: text/plain;charset=ISO-8859- ...
Spring与SpringMVC整合
SpringMVC和Spring整合的目的是为了分工明确。例如:SpringMVC的配置文件就来配置和网站转发逻辑以及网站功能有关的配置,如:视图解析器、文件上传解析器、支持ajax….
而Spring的配置文件用来配置和业务有关的,如:事物控制、数据源….
import可以在resources文件夹下创建三个配置文件:include-config.xml、spring-config、springmvc-confg
在include-config.xml配置文件中使用spring提供的import标签引入并合并另外两个配置文件
1234567<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoca ...
spring-cloud远程调用
笔记在微服务中,若想要使用远程调用,需要引入spring-cloud-starter-openfeign(在使用注册中心的环境下)
12345<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>xxx</version></dependency>
由于open-feign是声明式的远程调用,所以需要编写一个接口,并且告诉SpringCloud这个接口需要调用远程服务。这个接口我放在公共模块下的feign中。
1234567891011121314151617181920212223package top.ctong.gulimall.common.feign;import org.springframework.cloud.openfeign.FeignClient;import org.sp ...
Spring Boot整合MyBatis、Druid
Spring Boot整合MyBatis、Druid配置pom在pom.xml文件中引入mybatis、druid、mysq的依赖
1234567891011121314151617<!--mybatis 依赖--><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${spring-boot.mybatis}</version></dependency><!--mysql 连接依赖--><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency><! ...
Servlet线程安全
Servlet是单实例多线程环境下运行的。
什么时候程序存在线程安全问题?
多线程并发
有共享数据
共享数据有修改操作
在JVM中,哪些数据可能会存在线程安全问题?
局部变量内存空间不共享,一个线程一个栈,局部变量在栈内存中存储,局部变量不会存在线程安全问题。
常量不会被修改,所以常量不会存在线程安全问题。
所有线程共享一个堆
堆内存中new出来的对象在其中存储,对象内部有“实例变量”,所以“实例变量”的内存多线程是共享的,实例变量多线程共享访问,并且涉及到修改操作的时候就会存在线程安全问题。
所有线程共享一个方法区
方法区中有静态变量,静态变量的内存也是共享的,若涉及到修改操作,静态变量也存在线程安全问题。
线程安全问题不只是体现在JVM中,还有可能发生在数据库中,例如:多个线程共享同一张表,并且同时去修改表中的记录,那么这些记录就存在线程安全问题,若要解决数据库中线程安全问题至少有两种方案:
在Java程序中使用synchronized关键字,线程排队执行,自然不会在数据库中并发,解决线程安全问题。
行级锁/悲观锁,在执行的sql语句后加上for upd ...
Servlet生命周期
Servlet生命周期
什么是生命周期?生命周期表示一个Java对象从最初创建到被销毁的过程
Servlet的生命周期是谁来管理的?程序员可以干涉吗?
Servlet对象的生命周期javaweb程序员是无权干涉的,包括Servlet对象的相关方法的调用,javaweb程序员也是无权干涉的。Servlet对象从最初的创建开始,方法的调用、以及最后Servlet对象的销毁,整个过程都是由WEB容器来管理的。Web Container管理Servlet对象的生命周期。
默认情况下,Servlet对象在WEB服务器启动阶段不会被实例化。若希望在web服务器启动阶段实例化Servlet对象,需要使用特殊设置。
简单描述Servlet生命周期
用户在浏览器地址栏上输入URL:http://localhost:8080/xxx/xxx
web容器窃取请求路径:/xxx/xxx
web容器在容器上下文中找请求路径/xxx/xxx对应的Servlet对象
若没有找到对应的Servlet对象
通过web.xml文件中相关的配置信息,得到请求路径/xxx/xxx对应的Servl ...
Servlet Cookie
Cookie是什么?
Cookie可以保存会话状态,但是这个会话状态是保留在客户端上。
只要Cookie清楚或者失效,这个会话状态就没有了。
Cookie是保存在客户端上的
Cookie可以保存在浏览器的缓存中,浏览器关闭,Cookie消失。Cookie也可以保存在客户端的硬盘文件中,浏览器关闭Cookie还在,除非Cookie失效。
Cookie只有在javaweb中有吗?
Cookie不止是在javaweb中存在,只要是web开发,只要是B/S架构的系统,只要是基于HTTP协议,就有Cookie的存在。
Cookie这种机制是HTTP协议规定的。
Cookie实现的功能常见的有:
保留购物车商品的状态在客户端上
xxx天内免登录
java中Cookie被当作类来处理,使用new运算符可以创建Cookie对象,而且Cookie有两部分组成,分别是Cookie的name和value,name和value都是字符串类型。
在java中怎么创建Cookie,Cookie是在javax.servlet.http包下的
12improt javax.servle ...
MyBatis 配置结构
pom.xml 配置文件添加以下代码,配置MyBatis运行时扫描的路径,否则可能会导致找不到 Mapper
12345678910111213141516171819202122232425<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ctong.crm</group ...
JavaScript 判断0非空问题
用uniapp做商城购物车时有个需求:类似饿了么中的选商品规格功能,只不过我们需求是多选,我是这么做的:用一个对象记录选中的’规格’,例如:
1dataSet: {}
点击规格时,将当前被点击项v-for的index得到,判断dataSet是否有这个index,有代表删除,没有就代表需要添加
1234(index) { if(dataSet[index]) delect dataSet[index]; else dataSet[index] = index;}
非常完美,但测试时却无法删除索引为0的数据。原因是Number类型的0等于false
只要将0索引转为字符串即可
12345(index) { index = index + ''; if(dataSet[index]) delect dataSet[index]; else dataSet[index] = index;}
当Number类型的0和空字符串’’判断时,结果为true