SSM框架开发 笔记

SSM框架开发 笔记

1、前台ajax到后台,后台要返回给前台。数据都正常,但前台就是获取不到值。—解决办法:@ResponseBody写在Controller上,这样前台才能获取到该值。

2、关于post和ajax:

$.post$.get$.ajax的两种简单形式。如果对业务要求不是很好,可以用,否则应该使用 ajax。因为 ajax 可以指定很多其他参数,比如 post 默认是异步执行的,而 ajax 可以直接指定异步、同步方式。

3、SSM框架,mybatis配置xml,需要在插入一条数据之后返回插入的id,只需在 {这里} insert into XX的头部插入如下语句即可。

1
2
3
<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID() AS id
</selectKey>
阅读更多
一些常见的算法java实现

冒泡排序算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/**
* 冒泡排序算法
*/
public class BubbleSort {
/**
* 方法一
* 假如是5个数字相比较,那么只需比较4趟,所以外层循环是长度-1次
* 内层循环j比i大1,循环比较,arr[i]大于arr[j]则交换
* 这样,第一次 下标为0的位置就是最小的,
* 第二次比较i为1,比较到最后,就能选出第二小的,放在下标1的位置
*/
public static void sort(int[] arr){
for(int i=0; i<arr.length-1; i++){
for(int j=i+1; j<arr.length; j++){
if(arr[i]>arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}

/**
* 方法二,本质上和方法一一样
* 外层循环控制比较次数,也是数组长度-1
* 内层循环下表j从0开始,和下标j+1进行比较
* 也就是每两个相邻的比较,这样大的就会放在最后
* 下一次循环长度-i,就把最后一位排除了
*/
public static void sort2(int[] arr){
for(int i=0; i<arr.length-1; i++){
for(int j=0; j<arr.length-i-1; j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}

public static void main(String args[]){
int[] arr = {10,8,25,7,30,24,33,7,5,7,2,8,24,-1};
System.out.println("排序前");
for(int a : arr)
System.out.print(a + " ");

sort2(arr);

System.out.println();
System.out.println("排序后");
for(int a : arr)
System.out.print(a + " ");
}
}
阅读更多
java代码实现一些特殊功能

打印矩形、三角形、菱形、空心菱形等

原理及实现

阅读更多
spring--重要概念

Spring学习

一、原理

1、Spring的核心机制是IOC/DI(反转控制、依赖注入)和AOP(面向切面编程)。

注1:spring是一站式的框架,对EE的三层有每一层的解决方案,Web层,业务层,数据访问层。Web层:SpringMVC , 持久层:JDBC Template , 业务层 :Spring的Bean管理。 IOC思想 :工厂+反射+配置文件,底层原理就是提供一个工厂Bean,然后提供一个配置文件,把一些类全都配置在配置文件中,通过xml解析获得类的全路径,从而反射获得类的实例(可以理解为将类的控制权由类本身抽象到容器,由Srping容器提供同一的配置管理)。

注2:AOP就是面向切面编程通过 预编译 + 动态代理 实现程序功能的统一维护的技术。主要的功能是 :日志记录,性能统计,安全控制,事务处理,异常处理等。

2、概念:

(1)当某个角色需要另一个角色协助的时候,传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring中创建被调用者的实例不在由被调用者来完成,因此称为控制反转。创建被调用者的工作由Spring来完成,然后注入调用者,因此也称为依赖注入。(特征:降低了组建的耦合性,符合软件设计中的高内聚低耦合特性)

(2)面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。(特征:各步骤之间良好的隔离型,源代码无关性)

Spring Ioc反转控制

简单来说, IOC 解决了类与类之间的依赖关系,底层原理是使用的java的反射机制,最重要的当属Bean。Spring就是Bean工厂,用来管理Bean的生命周期和框架集成。(把dao依赖注入到service层,service层反转给action层,Spring顶层容器为BeanFactory)

Bean中的核心组件有:BeanFactory、ApplicationContext、BeanDefinition。

一个常见的:

1
2
3
4
5
  ApplicationContext ctx = new FileSystemXmlApplicationContext
("spring-beans/src/test/resources/beans.xml");
System.out.println("number : " + ctx.getBeanDefinitionCount());
((Person) ctx.getBean("person")).work();
}

Ioc的初始化过程:

  • 1、资源(Resource)定位;
  • 2、BeanDefinition 的载入和 BeanFactory 的构造.
  • 3、向 IOC 容器(BeanFactory)注册 BeanDefinition.
  • 4、根据 lazy-init 属性初始化 Bean 实例和依赖注入.
阅读更多
spring--事务管理

Spring事务管理

事务:是逻辑上的一组操作,要么全部成功,要么全部失败。

事务的特性 : ACID

  • Atomicity 原子性:事务不可分隔。
  • Consister 一致性:事务执行的前后,数据完整性保持一致。
  • Isolation 隔离性::一个事务执行的时候,不应该收到其他事务的干扰。
  • Durability 持久性:一旦结束,数据永久的保存到数据库。

一、基础知识

  • 1、Spring中的事务分为物理事务和逻辑事务

物理事务:就是底层数据库提供的事务支持,如 JDBC 或 JTA 提供的事务;

逻辑事务:是 Spring 管理的事务,不同于物理事务,逻辑事务提供更丰富的控制,而且如果想得到 Spring 事务管理的好处,必须使用逻辑事务,因此在 Spring 中如果没特别强调一般就是逻辑事务;

阅读更多
分享的一些java代码片段

分享的一些代码

html代码转纯文本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//将html转换为纯文本,此方法最后保留了&nbps空格,使用时注意将空格替换掉
public static String delHTMLTag(String htmlStr){
   String regEx_script="<script[^>]*?>[\\s\\S]*?<\\/script>"; //定义script的正则表达式
   String regEx_style="<style[^>]*?>[\\s\\S]*?<\\/style>"; //定义style的正则表达式
   String regEx_html="<[^>]+>"; //定义HTML标签的正则表达式

   Pattern p_script=Pattern.compile(regEx_script,Pattern.CASE_INSENSITIVE);
   Matcher m_script=p_script.matcher(htmlStr);
   htmlStr=m_script.replaceAll(""); //过滤script标签

   Pattern p_style=Pattern.compile(regEx_style,Pattern.CASE_INSENSITIVE);
   Matcher m_style=p_style.matcher(htmlStr);
   htmlStr=m_style.replaceAll(""); //过滤style标签

   Pattern p_html=Pattern.compile(regEx_html,Pattern.CASE_INSENSITIVE);
   Matcher m_html=p_html.matcher(htmlStr);
   htmlStr=m_html.replaceAll(""); //过滤html标签

   return htmlStr.trim(); //返回文本字符串
}
阅读更多
web全栈-一些工具的使用

相关配置

eclipse默认编码为GBK,修改为UTF8的方法

都修改成UTF8的方法:

1、windows->Preferences…打开”首选项”对话框,左侧导航树,导航到general->Workspace,右侧 Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。

2、windows->Preferences…打开”首选项”对话框,左侧导航树,导航到general->Content Types,右侧Context Types树,点开Text,选择Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8。其他java应用开发相关的文件如:properties、XML等已经由Eclipse缺省指定,分别为ISO8859-1,UTF-8,如开发中确需改变编码格式则可以在此指定。

  • 1.空间编码 :Windows–Preferences–>General–>WorkSpace–(Text file encoding)
  • 2.项目编码 :右键工程Properties–>(Other)
  • 3.文件编码 :右键文件Properties–>(Other)
阅读更多
springBoot --- JavaMailSender发送电子邮件

JavaMailSender

1、添加依赖

1
2
3
<dependency>				
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

2、配置文件

1
spring.mail.host=smtp.qq.com spring.mail.username=⽤户名 spring.mail.password=密码 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true

阅读更多