摘要: 浏览器与服务器之间的数据交换有很多类型,不只是表单提交数据这一种,比如ajax技术就大量使用json、xml等,这时候就涉及到浏览器端和服务器端数据格式转换的问题,服务器端都是Java对象,需要把请求信息转为Java对象,或者把Java对象转换为响应信息,Spring提供了很重要的接口HttpMes 阅读全文
posted @ 2017-03-31 16:36 sonng 阅读(5277) 评论(0) 推荐(0) 编辑
摘要: MVC,模型、视图、控制器,请求来了,控制器负责找到Controller进行一通计算,计算的结果放到模型里,再找视图把结果呈现出来。 请求里一般都包含了一些参数,前面说了,Spring MVC有很多种方式可以拿到这些参数,一通计算之后把结果存到了模型里,但是这模型有哪些,怎样顺顺利利的交给视图呢? 阅读全文
posted @ 2017-03-30 22:24 sonng 阅读(5033) 评论(0) 推荐(0) 编辑
摘要: 获取HTTP请求头信息 一个HTTP请求除了有参数和实体内容外还有HTTP请求头信息,Spring MVC也可以获取这部分信息 @RequestHeader解可以将请求头信息映射到处理方法的形参上 @CookieValue注解可以将Cookie映射到形参上 写个controller 写个result 阅读全文
posted @ 2017-03-30 13:54 sonng 阅读(10289) 评论(0) 推荐(1) 编辑
摘要: 浏览器总会向服务器传递一些参数,那么Spring MVC如何接收这些参数? 先写个简单的html,向服务器传递一些书籍信息,如下: 再写个视图result.jsp 1. 通过HttpServletRequest获得请求参数和数据 tomcat类容器会自动将请求的参数封装到HttpServletReq 阅读全文
posted @ 2017-03-30 10:48 sonng 阅读(9403) 评论(0) 推荐(1) 编辑
摘要: 刚才在折腾的时候,发现applicationContext.xml中配置了``后,能访问静态资源,却不能访问动态资源了;注释掉之后,不能访问静态却能访问动态资源。 找了些资料都说,如果把web.xml中将DispatcherServlet配置为拦截所有请求,包括静态和动态的,像下面这样: 那么,在a 阅读全文
posted @ 2017-03-29 21:02 sonng 阅读(3767) 评论(0) 推荐(0) 编辑
摘要: @Controller注解 该注解用来指示一个类是一个控制器,在Spring的配置xml文件中开启注解扫描 后,DispatcherServlet会扫描使用该注解的类的方法,再检测是否使用了@RequestMapping注解,使用了该注解才会将处理方法映射到对应的请求上 类似于@Controller 阅读全文
posted @ 2017-03-29 16:18 sonng 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 按照0052中的办法,如果一个站点设计有1000个请求,那就得写1000个controller,还得配置1000个``,这个工作量无疑没有必要。 实际上,还可以通过注解实现,用@Controller注解将一个类指定为Controller,就不用实现Controller接口,也不用一定是 这个方法签名 阅读全文
posted @ 2017-03-28 15:54 sonng 阅读(347) 评论(0) 推荐(0) 编辑
摘要: Spring MVC是什么 Spring是一个框架,包括了MVC、IoC、AOP等等组件 MVC是一种思想,并非Spring框架独有,全称是Model、View、Controller,即模型、视图、控制器。服务器收到请求,交给Controller,Controller负责找到对应的一些方法完成计算, 阅读全文
posted @ 2017-03-28 11:24 sonng 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 用户与订单时一对多关系,再加上商品信息的话,订单与商品之间就是多对多关系了 sql DROP DATABASE IF EXISTS testdb; USE testdb; / 用户表,记录用户信息;用户与订单为一对多关系:一个用户可拥有多个订单 / DROP TABLE IF EXISTS ; CR 阅读全文
posted @ 2017-03-25 17:23 sonng 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 一对多关系更加常见,比如用户和订单,一个用户可以有多个订单 sql DROP TABLE IF EXISTS customer; / 用户表 / CREATE TABLE customer( INT PRIMARY KEY AUTO_INCREMENT, VARCHAR(16), VARCHAR(1 阅读全文
posted @ 2017-03-24 17:35 sonng 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 世上的事务总不是孤立存在的,表现在Java类里面,则是类与类之间的关系,比如继承is a、依赖use a、关联has a,反映在数据库中,则是表与表之间的关系,比如外键 关联关系存在着以下几种类型:一对一关系;一对多和多对一关系;多对多关系 一对一关系:    &nbs 阅读全文
posted @ 2017-03-24 11:37 sonng 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 假如有如下的关于书籍基本信息的表: sql DROP DATABASE IF EXISTS ; CREATE DATABASE ; USE books; DROP TABLE IF EXISTS ; CREATE TABLE ( int(11) NOT NULL AUTO_INCREMENT, va 阅读全文
posted @ 2017-03-23 11:20 sonng 阅读(334) 评论(0) 推荐(1) 编辑
摘要: AOP的全称是Aspect Oriented Programming,面向切面编程。 切面是什么呢,就是一个Java类。之所以叫切面,就是说在调用其他一些类的方法的某个时候(之前,之后,抛异常等),调用这个类里的某个方法,因为要对很多类的很多方法进行相同的作用,就像一刀切一样。 aop涉及到三个要素 阅读全文
posted @ 2017-03-21 20:33 sonng 阅读(2313) 评论(0) 推荐(0) 编辑
摘要: @Transactianal注解有一些属性,见Spring Framework Reference Table17.3 Transactional settings 控制事务传播 propagation属性 事务的传播是指:     A.f1()有事务X &n 阅读全文
posted @ 2017-03-20 20:12 sonng 阅读(8881) 评论(1) 推荐(4) 编辑
摘要: 在一个业务的实现过程中,可能需要多条sql完成对数据库的操作,比如账户登录,需要匹配用户名和密码,然后要增加积分,还要记录登录的ip和时间,这可能需要三个sql语句,这三个语句应当是一个整体,任意一个sql执行不成功,都表示这个业务没有执行完成,这就有了事务的概念。 事务是数据库中的概念,就是对数据 阅读全文
posted @ 2017-03-20 11:30 sonng 阅读(25993) 评论(0) 推荐(2) 编辑
摘要: Spring框架中,创建bean,装配bean,事务控制等,可以用xml配置或者注解扫描的方法实现。如果用注解扫描,在xml配置中得加上 但以上配置生效的前提,还要配置好相应的命名空间,比如: 那这些命名空间又是什么,以tx为例: 『xmlns:tx="http://www.springframew 阅读全文
posted @ 2017-03-19 21:40 sonng 阅读(1591) 评论(0) 推荐(0) 编辑
摘要: 基本概念: 数据库DB(database): + 数据的仓库,数据的集合,是数据的一种结构化的存储 数据库管理系统DBMS(database management system): + 管理数据库的一套软件 + 比如Oracle、MySQL、SQL server、DB2 + 介于应用程序和操作系统之 阅读全文
posted @ 2016-12-17 17:00 sonng 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 什么是线程池 创建线程,因为涉及到跟操作系统交互,比较耗费资源。如果要创建大量的线程,而每个线程的生存期又很短,这时候就应该使用线程池了,就像数据库的连接池一样,预先开启一定数量的线程,有任务了就将任务传递进去,任务执行完毕不终止线程,等待下一个任务 线程池的种类 ExecutorService: 阅读全文
posted @ 2016-12-11 09:24 sonng 阅读(754) 评论(0) 推荐(0) 编辑
摘要: run()与异常 不管是Threade还是Runnable的run()方法都没有定义抛出异常,也就是说一条线程内部发生的checked异常,必须也只能在内部用try catch处理掉,不能往外抛,因为线程是一个独立运行的代码片段,它的问题不能影响到其他线程 如果run()内部抛出一个unchecke 阅读全文
posted @ 2016-12-09 12:06 sonng 阅读(2266) 评论(0) 推荐(0) 编辑
摘要: join线程 假如A线程要B线程去完成一项任务,在B线程完成返回之前,不进行下一步执行,那么就可以调用B线程的join()方法 join()方法的重载: + join():等待不限时间 + join(long millis):等待millis毫秒 + join(long millis,int nan 阅读全文
posted @ 2016-12-08 16:39 sonng 阅读(362) 评论(0) 推荐(0) 编辑