zeewane


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索
close

Spring MVC框架概述

发表于 2016-07-30   |   分类于 框架   |  

简要概述

springmvc框架原理

  • 前端控制器
  • 处理器映射器
  • 处理器适配器
  • 视图解析器

处理器适配中的注解开发一定要懂

springmvc注解开发

  • 常用的注解
  • 参数绑定(Request请求过来的参数,要被框架接收然后处理)
    • 简单类型
    • POJO(Plain Old Java Object,简单老式java对象)
    • 自定义参数绑定

什么是spring mvc

  • spring mvc是在表现层的东西
  • spring mvc是spring框架的一个模块,spring mvc和spring不需要通过中间整合层进行整合,本来就是spring自己的一部分
  • 是一个基于mvc的web框架

    什么是mvc

  • mvc是一种设计模式

在B/S系统中,模型(Model)是没有办法直接把数据填充到视图(View)里面的,需要把数据返回给控制器(Controller),然后控制器拿着数据去渲染页面,同时给用户一个response相应。

  • 模型(Model)
    这是一个很大的概念,不仅仅是pojo,action、service、dao都是模型的一部分。
  • 控制器(Controller)
    这个在struts2中,就是filter,其实在spring mvc这边,这个叫前端控制器。spring mvc中是servlet,名字叫DispatcherServlet。
    action也被叫做后端控制器,在spring mvc中,是 Handler处理器,平常被叫作Controller。
  • 映射处理器(HandlerMapping)
    前端控制器接收到的数据后要调用Handler,但是前端控制器不知道具体是哪个handler来处理这个url请求,所以这两个东西中间要有另外一层,来告诉前端控制器,去调用具体哪一个handler,这就是处理器映射器(HanlerMapping)。

映射处理器返回的是一个执行链(HandlerExecutionChain),是一个底层的封装类

1
2
3
4
5
6
7
8
HandlerExecutionChain{
//可以有多个拦截器
HandlerInterceptor1
HandlerInterceptor2
Handler
}

从Request到Response

步骤

  1. 发起请求到前端控制器(DispatcherServlet)
  2. 前端控制器请求HandlerMapping查找 Handler
    可以根据xml配置、注解进行查找
  3. 处理器映射器HandlerMapping向前端控制器返回Handler
  4. 前端控制器调用处理器适配器去执行Handler
  5. 处理器适配器去执行Handler
  6. Handler执行完成给适配器返回ModelAndView
  7. 处理器适配器向前端控制器返回ModelAndView
    ModelAndView是springmvc框架的一个底层对象,包括 Model和view
  8. 前端控制器请求视图解析器去进行视图解析
    根据逻辑视图名解析成真正的视图(jsp)
  9. 视图解析器向前端控制器返回View
  10. 前端控制器进行视图渲染
    视图渲染将模型数据(在ModelAndView对象中)填充到request域
  11. 前端控制器向用户响应结果

组件

  • 前端控制器DispatcherServlet(不需要程序员开发)
    作用接收请求,响应结果,相当于转发器,中央处理器。
    有了DispatcherServlet减少了其它组件之间的耦合度。
  • 处理器映射器HandlerMapping(不需要程序员开发)
    作用:根据请求的url查找Handler
  • 处理器适配器HandlerAdapter
    作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler
  • 处理器Handler(需要程序员开发)
    注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler
  • 视图解析器View resolver(不需要程序员开发)
    作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)
  • 视图View(需要程序员开发jsp)
    View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf…)

需要开发的,就是view中的jsp和处理器Handler。

java中的date插入到mysql的datetime中的方法

发表于 2016-07-29   |   分类于 后台   |  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.hundsun;
import java.sql.Timestamp;
import java.util.Date;
/**
* Created by zeewane on 2016/7/29/0029.
*/
public class DateDemo {
public static void main(String[] args) {
Date date = new Date();
Timestamp timestamp = new Timestamp(date.getTime());
System.out.println(timestamp);//2016-07-29 16:28:44.526
}
}

MyBatis分页查询

发表于 2016-07-28   |   分类于 后台   |  

实体类

  • 实体类的属性都要用元类型的包装类,如
    private Integer userId;

    DAO

  • 普通的dao接口应该继承IEntity接口不是实现,是继承
  • 接口com.hundsun.jresplus.dao.common.func.IEntityDAO定义了基础的增删改取和查询功能,普通DAO接口应继承该接口。
  • IEntityDAO约束两个泛型‘T’和‘P’。< T >表示实体类;< P >表示查询参数,应包含一些分页信息,查询参数还应包含其他查询条件,排序方式等信息.如
    1
    2
    public interface IParticipationDAO
    extends IEntityDAO<Participation, ParticipationQry>

映射文件

  • 文件名要和DAO接口一致
  • <mapper>结点下定义一个id=”BaseResultMap”的<resultMap>的结点,该映射内容用来定义实体与数据表的对应关系。
  • Mybatis需要配置<insert/> 、<update/>、<delete/>、<select/>等操作节点来实现操作功能,id属性需要与DAO接口定义的方法名一致。
  • 最上面对表的各个属性的映射一定要写正确了

t2 sdk

cep和t2sdk是差不多的
在他那层看到的是包,是二进制的东西
但是写java的希望看到对象
cep本身有路由的功能,一个java版本的server
cep里面是封装过的

会拦截带有(ListPage)字样的sql,然后会根据在配置文件里设置的数据库类型,往后面添加分页的sql语句,如mysql就会自动往后面加上limit 10,5,代表从第十条开始,一共五条

1
2
3
4
<!-- 分页处理拦截器,会去拦截带有ListPage的sql语句?-->
<bean id="paginationInterceptor" class="com.hundsun.jresplus.dao.mybatis3.interceptor.PaginationInterceptor">
<property name="pageMapper" value=".*ListPage.*"/>
</bean>

关键

Qry查询参数类是关键,页面上只要传个start过来,会自动封装成ParticipationQry然后传给远程的service,然后去调用dao完成相应的功能然后返回,可以自定义一个pageUtil类,把页面的那些信息也都放进去,通过计算得到LastPage、currentPage等等然后一起把pageUtil返回到页面上,页面上直接去获取这些值,而不是在页面上进行计算。

Jade学习笔记1

发表于 2016-07-27   |   分类于 前端   |  

什么是Jade

Jade是一种网页模板渲染的引擎,通过一些简单的方式就可以自动渲染成为html的样式,不必每次都去写一堆尖括号标签。
我感觉和markdown有点类似呢……虽然两个东西区别蛮大的,markdown类似于一种标记语言,书写文字的时候可以直接通过一些符号来实现相应的格式,而不是通过鼠标去工具栏那边点啊点,而且排版还很漂亮,实时预览。Jade也是使用一些标签,然后Jade引擎会自动翻译成html的语言。

Jade使用一些标签来标记如何生成HTML,Jade模板文件看起来很不像HTML文件,但它的模板文件小而整洁。Jade是一款高性能简洁易懂的模板引擎,Jade是Haml的Javascript实现,在服务端(NodeJS)及客户端均有支持。

1
2
3
4
5
//Jade
div#container
//after Jade render
<div id="container></div>

Jade的安装

首先要安装nodejs和npm

  • nodejs
  • 装nodejs的时候会自动给安装好npm
    npm:nodejs package manager,js的包管理器,上面很多很多现成的包,需要的时候只要一条命令就可以去下载下来使用,也可以往上面上传。

通过npm安装Jade

$ npm install -g Jade
输入Jade version,若显示版本则代表安装成功

使用Jade

  1. 随便写一个demo.Jade

    1
    2
    3
    4
    5
    6
    doctype html
    html
    head
    title hello Jade
    body
    h2 hello Jade!
  2. cd到目录下,编译运行
    Jade demo.Jade
    显示编译完成,回到目录下,会发现多了个demo.html文件,查看源代码

    1
    2
    3
    4
    5
    6
    7
    8
    <!DOCTYPE html>
    <html>
    <head>
    <title>hello Jade</title>
    </head>
    <body></body>
    <h2>hello Jade!</h2>
    </html>
  3. 上面这种方式,每次修改都要重新编译,太麻烦。使用
    Jade -P -w demo.Jade
    会自动给每一次的修改编译,修改完只需要保存一下,然后就可以去页面上预览

参考

  • 基本语法
  • 官网

盒子模型

发表于 2016-07-14   |  

盒子模型

四个部分组成

  • 自身元素的内容
  • 内边距(padding)
  • 边框线(border)
  • 外边距(margin)

主要是两个属性

  • content-box
  • border-box(基本上所有的框架都用这个来布局)

    区别

  • contnt-box实际的宽高并不是在样式里设置的大小,还会包括其他的三个部分的大小,会被撑开
  • border-box,设置的大小是整个的大小,不仅仅是内部自身元素的大小,忽略掉边框线和内边距的宽度
    border-box更好控制??

现在的用法

1
*box-sizing:border-box;再加点兼容的代码

before和after,占位符的作用,伪类
此处要放通配符定义的代码
除了ie6和7,其他的基本上都是兼容的,所以可以放心使用

Hello World

发表于 2016-07-11   |  

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

1…34
戚志伟

戚志伟

To be a better man.

36 日志
9 分类
29 标签
RSS
知乎 微博 GitHub
© 2016 - 2017 戚志伟
由 Hexo 强力驱动
主题 - NexT.Pisces