随笔 -1(毕业前)

web.xml中配置过滤器处理中文乱码问题:

    
        encoding
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            utf-8
        
    
    
        encoding
        *
    

拦截器使用场景:

  1. 解决乱码问题
  2. 解决权限验证问题

HTTP 消息结构

1. 客户端请求信息:请求行,请求头,空行,请求数据

请求方法 URL 协议版本 --请求行
头部字段名... --请求头部
--空行
--请求数据

2. 服务器端响应信息:状态行,消息报头,空行,响应正文

HTTP/1.1 200 OK --状态行
Date:...
Content-Type:...
Content-Length:... ---消息报头
--空行

...
--响应正文

HTTP状态码分类

  • 200 - 请求成功
  • 301 - 资源(网页等)被永久转移到其它URL
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误

css中url的相对路径

  • / 表示根目录(最原始开头的那个目录);
  • ~/ 表示虚拟站点根目录;
  • ../ 表示上级目录(当前目录的上一级),相当于在当前目录按了一次后退键;
  • ../../ 表示上上级目录;
  • ./ 当前目录(当前目录下)。

背景图片平铺:

background-size:cover;

css常用块级元素:

div
form 
h1 
hr 
p 
table 
ul 

css常用内联元素

a
b
br
font 
i
img 
input 
select 
label 
span 
strong 
textarea 

垂直居中

line-height:80px;

水平居中(div中设置)

text-align:center;

去除列表前面小点

list-style:none;

Core标签库

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

JSP中page、request、session、 application的作用域

  • application:作用是保存公共信息

范围:从服务器开始执行服务,到服务器关闭为止
服务器启动到停止这段时间

  • session:主要用于保存用户的各种信息

范围:用户持续和服务器连接的时间
HTTP会话开始到结束这段时间

  • request:

范围:一个HTTP请求开始到结束这段时间

  • page:

范围:当前页面从打开到关闭这段时间
只在同一个页面中有效

* request和page的区别:

一个request可以包含多个page页

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%
    String basePath = request.getContextPath();//根路径/ssm01
%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page isELIgnored="false" %>

tcl运行命令

source ../test/test.tcl

bootstrap样式的引用

    
    
    

z-index指定堆叠顺序

placeholder="默认值,占位符"

background:-webkit-gradient()背景渐变属性

clearTimeout(time);

time = setTimeout(function() {
    box.find(".cont").hide();
    box_hide();
}, 50);

session.removeAttribute("goodkind");

request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");

Date birthday=new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("date"));

HttpSession session = request.getSession();
                session.setAttribute("user", user);

request.getParameter("username");request.getAttribute("username");的区别:

setAttribute()
getParameter()
getAttribute()

当两个web组件(比如说jsp页面)为链接关系时(比如表单提交),用request.getParameter()方法

当两个Web组件之间为转发关系时,转发目标组件通过
getAttribute()方法来和转发源组件共享request范围内的数据,此时需先在1.jsp中setAttibute(),然后在2.jsp中getAttribute()

request.setAttribute() 和 getAttribute() 方法传递的数据只会存在于Web容器内部

request.getParameter() 方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。request.getParameter()方法返回String类型的数据

转发和重定向区别:

  • 前后两个页面有数据传递 : 请求转发
  • 无数据传递 : 重定向。

分页计算总页数算法:

int totalPageNum = (totalRecord + pageSize - 1) / pageSize;

得到路径: request.getRequestURI():

得到参数: request.getQueryString() :

加载数据库配置信息

    loadConfig(){
        InputStream in = JdbcUtil.class.getResourceAsStream("/jdbc.properties");
        Properties prop = new Properties();
        prop.load(in);
        USERNAME = prop.getProperty("jdbc.username");
        PASSWORD...
    }

catch(SQLException e){
    throw new RuntIMEexception("查询数据异常",e);
}

获取url="a/aa?param1=1¶m2=5..."后参数:

controller中,request.getParameter("param1");

文件上传下载

    
请选择图片:

截取字符串

    String str = "e\adb\wda\wd\test.jsp"wda";
    int beginIndex = str.lastIndexOf("\\");
    int endIndex = str.lastIndexOf("\"");
    String str2 = str.substring(beginIndex,endIndex);
request.getSession().setAttribute("","");
response.sendRedirect("index.jsp");

drop table if exists a;

单例模式:

  • 饿汉模式:
        public class Singleton{
            private Singleton(){

            }
            private static Singleton instance = new Singleton();
            public static Singleton getInstance(){
                return instance;
            }

        }
  • 懒汉模式:
        public class Singleton2{
            private Singleton2(){

            }
            private static Singleton2 instance;
            public static synchronized Singleton2 getInstance(){
                if(instance==null){
                    instance = new Singleton2();
                }else{
                    return instance;
                }
                return instance;
            }
        }

懒汉模式和饿汉模式区别:

  • 懒汉模式特点是加载类时比较快,但是运行时获取对象的速度比较慢,线程不安全(加上synchronized就是线程安全的)
  • 饿汉模式的特点是加载类时比较慢,但是运行时获取对象的速度比较快,线程安全

java反射:

1.java中两种不是对象:静态成员,基本数据类型类
类是java.lang.Class的实例对象
2.Foo foo1 = new Foo();//foo1即Foo的实例对象
3.Foo又是Class的实例对象,Class的实例的表示方法:
    1)Class c1 = Foo.class;//隐含的静态成员变量class
    2)Class c2 = foo1.getClass();//已知该类对象时
    3)Class c3 = Class.forName("com.asiainfo.Foo");//全类名
    通过c1 c2 c3创建Foo的实例对象
    Foo foo = (Foo)c1.newInstance();
4.Class.forName("com.asiainfo.Foo")
    是一个动态加载类,编译时加载类是静态加载类,运行时刻加载的类是动态加载类
    new创建对象,是静态加载类,在编译的时候就需要加载所有可能使用到的类

记得设置表单method方法,默认get,后台获取不到参数,设成post即可获取参数

  • TODO
  • 注册表单验证ajax
  • 弹出层
  • 侧边栏
  • 数据库乱码
  • 文件上传
  • 图片显示

html行内元素(inline),块级元素(block)

inline:相邻行内元素排成一行,宽度随元素内容变化
       宽高无效
       margin padding水平方向有效(边距效果),竖直方向无效
block:独占一行,宽度默认填充父元素宽度
      width,height有效
      margin,padding有效
常见行内,块级元素:
    inline:a br img input label span button
    block:div form h1 hr menu p table ul

去掉下划线:

text-decoration:none;

去掉无序列表前面圆点:

list-style:none;

无序列表由纵向变为横向:

float:left;

VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是65535个字节

mysql中文乱码问题:

    1.查看默认的编码格式:
        mysql>show variables like "%char%";  
            | character_set_client | gbk |  
            | character_set_connection | gbk |  
            | character_set_database | utf8 |  
            | character_set_filesystem | binary |  
            | character_set_results | gbk |  
            | character_set_server | utf8 |  
            | character_set_system | utf8 |  
        mysql>set names utf8;
            作用:SET character_set_client='utf8';  
                 SET character_set_connection='utf8';  
                 SET character_set_results='utf8';  

    2.查看数据库的编码格式:
        mysql>show create database test;

    3.修改数据库编码格式:
        mysql>ALTER DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;  

    4.查看创建表语句及其编码格式:
    mysql>show create table student;   

    5.修改表的编码格式:
    mysql>ALTER TABLE admin DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;   

CLIENT SECTION
        [mysql]
        default-character-set=utf8(作用跟set names utf8;一样,都是将client,connection,results字符集由Latin1转为utf8,不同的是set names utf8;仅仅对当前操作有效,重启mysql服务器恢复默认字符集Latin1)
    
    为避免乱码,建库建表时设置字符集为utf8:
        建库:
            CREATE DATABASE `test` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
        建表:
            CREATE TABLE `database_user` () ENGINE=InnoDB DEFAULT CHARSET=utf8;

    mysql>\s    mysql>status  都可以显示数据库字符集信息
    set character_set_connection = 'utf8';改变编码集

    注:*****创建数据库,表均已设置编码集为utf8时,如果还不能在cmd窗口写入中文,则检查一下cmd默认编码集,若为gbk,则应:mysql>set names gbk;此时写入的中文数据可以被cmd正确解释

判断数据库中是否存在对应用户:select count(*)...根据返回记录数确定是否存在

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%
    String basePath = request.getContextPath();//根路径
%>

mybatis 数据库利用like进行模糊查询时,要使用concat合并查询条件

select * from user where name like concat('%',#{name},'%')

注意::::**************

  • 当jsp页面向后台传递参数时可能出现乱码错误,是由于页面编码为ISO-8859-1,而后台需要接收编码为UTF-8的参数,此时直接接收就会出现乱码
  • 解决方法如下:
    String str1 = 传来的参数;
    String str2 = new String(str1.getBytes("ISO-8859-1"),"utf-8"); //转码UTF8

提示窗:alert("确认");

确认窗:confirm("确认,取消");

JSONArray obj=JSONArray.fromObject(industrys);
String jsonStr = json.toString();
return jsonStr;

$.each():

$("#myTb").remove();
$("#myTb").append(tbBody);

ServerSocket  ss = new ServerSocket(8888);
Socket s = ss.accept();
InputStream is = new InputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String info = null;
while((info=br.readLine())!=null){
    System.out.println(info);
}

window.location.reload();
window.location.href = "<%=basePath%>/user/login";

TODO:

  • 安全性:登录验证,密码加密√
  • 表格局部刷新√
  • 修改个人信息
  • 管理系统
  • 批量删除√
  • 快捷键
  • 多线程
  • XML解析
  • Json√
  • 文件上传下载√
  • 框架原理
  • JVM
  • 分页√
  • http协议
  • ajax表单验证√
  • 序列化
  • 哈希
  • 算法
  • 数据结构
  • 监听器√
  • 过滤器√
  • 拦截器√
  • 异常机制
  • 网络爬虫
  • 网络支付
  • java反射机制
  • TCP/IP

默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚。

spring aop 异常捕获原理:

  • 被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行回滚,默认情况下aop只捕获runtimeexception的异常,但可以通过配置来捕获特定的异常并回滚
    换句话说在service的方法中不使用try catch 或者在catch中最后加上throw new runtimeexcetpion(),这样程序异常时才能被aop捕获进而回滚

解决方案:

方案1.例如service层处理事务,那么service中的方法中不做异常捕获,或者在catch语句中最后增加throw new RuntimeException()语句,以便让aop捕获异常再去回滚,并且在service上层(webservice客户端,view层action)要继续捕获这个异常并处理

方案2.在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,这样上层就无需去处理异常(现在项目的做法)

/* select :获取下拉框选项值
 * option为获取到的点击下拉框的值
 */
var option = $("#option option:selected").val();

text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果

块阴影效果:
-webkit-box-shadow:0 0 10px #0CC;
-moz-box-shadow:0 0 10px #0CC;
box-shadow:0 0 10px #0CC;

文本阴影效果:
text-shadow: 0px 0px 5px blue;

$("#tbody").children().remove();
$("#tbody").empty();这两种方式效果相同,都可以把table清空,remove()方法直接将table的孩子节点删除,empty()方法是将table置空,并未删除节点

ajax写入表格页面拼接方法:

    success:function(data){
        /* $("#tbody").children().remove(); */
        $("#tbody").empty();/*两种方式一样*/
        $.each(data,function(i,value){
            var status = value.status== 0 ? "未支付" : "已支付";
            var element = ""+value.id+""+"![](+value.imgUrl+)"+""
            +value.pro_name+""+value.price+""
            +value.count+""+value.sum+""
            +value.order_time+""+status+""
            +"删除"+"";
            $("#tbody").append(element);
        });
    },

css样式字体加粗:

font-weight: bold

blockUI插件


//插件
    $.blockUI();
    $.unblockUI();

ModelAndView默认使用forward方式

public ModelAndView index(){
    ModelMap model = new ModelMap();
    model.addAttribute("test", "test");
    ModelAndView mv = new ModelAndView("index", model);
    mv.addObject("test2", "test2");
    return mv;
}//addAttribute()和addObject()方法都是设定model对象

HttpServletRequest request = ServletActionContext.getRequest();

js禁用鼠标滚轮滑动:

function disabledMouseWheel() {  
  if (document.addEventListener) {  
    document.addEventListener('DOMMouseScroll', scrollFunc, false);  
  }//W3C  
  window.onmousewheel = document.onmousewheel = scrollFunc;//IE/Opera/Chrome  
}  
function scrollFunc(evt) {  
  return false;  
}
  • js禁止滚动条移动:

参考博文

  • 隐藏纵向滚动条

document.body.parentNode.style.overflowY ="hidden";

  • 开启纵向滚动条

document.body.parentNode.style.overflowY ="auto";

如何向弹出层传值:

通过js事件(如点击onclik="a(x,y)")给方法传递页面参数,然后通过html()或attr()等方法向弹出窗口写入数据

cookie session学习网址:

参考博文

jQuery获取图片路径:

$("#img2").attr("src");

java中length,length(),size()区别

  • java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.
  • java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.
  • java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!d

display visibility区别:

  • display:none -->元素跟着浮动,不会占据原有位置
  • visibility:hidden -->隐藏元素,但仍占据原有位置,不会浮动

加载数据库配置信息:

    InputStream is = JdbcUtil.class.getResourceAsStream("/jdbc.properties");
    Properties prop = new Properties();
    prop.load(is);
    USERNAME = prop.getProperty("jdbc.username");
    ...

input: style="width: 50px;height: 33px;color: white;background-color: red;border:0 white solid;"

show create table;

js正则表达式:

参考博文

web.xml


灰色:#f5f5f5
蓝色:#007fff

JOptionPane类提示框的一些常用的方法:

参考博文

  • / 服务器的根目录
  • path 项目的根目录
  • url-pattern 处必须以/开头,表示项目的根目录

jQuery模态窗口!!!

过滤器(Filter)、拦截器(Interceptor)、监听器(Listener):

  • 过滤器:字符编码过滤,权限访问控制(用户登录与否),过滤敏感词汇等,主要是对HttpServletRequest,HttpServletResponse进行拦截检查
  • 监听器:application,session,request对象监听器监听客户端,服务器端请求,操作等
  • 拦截器:

session的销毁有3种情况:

  • session超时,web.xml配置:

    120
  • 手工使session失效
    public void invalidate();//使session失效方法。session.invalidate();
  • 服务器重新部署

重写equals方法:

    @Override
    public boolean equals(Object obj){
        if(obj==this){
            return true;
        }
        if(obj==null){
            return false;
        }
        if(!(obj instanceof Course)){
            return false;
        }
        Course course = (Course)obj;
        if(this.name==null){
            if(course.name==null){
                return true;
            }else{
                return false;
            }
        }else{
            if(this.name.equals(course.name)){
                return true;
            }else{
                return false;
            }
        }
    }

set需要重写hashcode方法

Bootstrap CDN




列偏移

col-md-offset-4

注意页面传值类型!!!

xml配置错误:

The entity name must immediately follow the '&' in the entity reference.
解决办法:将&替换成and

attempted to return null from a method with a primitive return type (int).

解决办法:解决这个问题,是当查出来为NULL时,结一个默认值,如:0。

  • mysql:
    SELECT IFNULL(MAX(SORT),0)AS sort FROM web_d_info
  • oracle:
    SELECT nvl(MAX(SORT),0) as sort FROM web_d_info

sqlJAVA
Cannot load excludes configuration file "/WEB-INF/decorators.xml" as specified in "sitemesh.xml" or "sitemesh-defaul : decorators.xml名称和位置不能放错

WEB-INF目录下jsp不能直接被外部访问,所以应使用方法访问路径

  1. 把页面资源文件只能放在webroot或WebContent下面,如 CSS,JS,image等.放在WEB-INF下直接引用不了,可以通过统一的拦截器拦截静态资源,当有请求过来时,forward至静态源。。
  2. 只能用转发方式来访问WEB-INF目录下的JSP,不用采用重定向的方式请求该目录里面的任何资源。
  3. WEB-INF目录下文件访问资源文件时,可以忽略WEB-INF这一层目录.如index.jsp 要用css目录里的一个css文件. 这样就行了。
  4. WEB-INF目录下的文件之间如何访问呢.可以通过action和servlet转发跳转

你可能感兴趣的:(随笔 -1(毕业前))