zoukankan      html  css  js  c++  java
  • web开发小知识

    session共享机制:f5刷新是再次提交之前的数据请求 地址栏回车属于不同的请求 不同浏览器获取不到之前数据 同一浏览器可以获取同步数据
    
    session注销:session.invalidate();//全部session失效
    	     session.removeAttribute(xxx);//失效某个session
    
    cookie:不是内置对象 需要new 但服务端会仅仅自动new一个名字为jssionid的cookie
    	getNmae()获取cookie对象的名字
    	getValue()获取cookie对象的值
    	request.getCookies()获取cookie对象数组
    
    获取浏览器Jessionid:request.getCookies()[0].getValue() 和session.getId()值一样的
    
    application.getContextPath() 当前项目的虚拟路径
    application.getRealPath(application.getContextPath()) 当前项目的绝对路径
    
    解决post请求乱码:request.setCharacterEncoding("utf-8");
    		  response.setCharacterEncoding("utf-8");
    
    四种范围对象:均有set、getAttribute的方法
    	pagecontext 当前页面有效
    	request 同一个请求有效 请求转发可共享数据,重定向(二次请求)数据拿不到
    	session 换浏览器、关闭浏览器无效
    	application 整个项目运行期间均有效包括换浏览器/关闭浏览器或其他项目访问也会无效
    	····JNDI技术可实现关闭浏览器或其他项目访问也会有效····
    
    JDBC:drivermanager-jdbd驱动
    	connection-连接
    	statement   	  connection.createstatement()
    	preparedstatement connection.preparestatement()) 
    	resultset 返回结果集	
    	callablestatement 调用存储过程和函数 connection.preparecall(过程、函数名字)
    	过程无返回值用out代替  存储函数有返回值return
    	例子:xxx=connection.preparecall("{call 过程名(?,?,?)}")
    		xxx.setInt(1,xx)
    		xxx.setInt(2,xx)
    		xxx.execute()
    		xxx.registeroutparameter(3,Types.INTEGER)//设置返回值类型
    		int result=xxx.get(3)
    
    	orecle大文本BLOB、CLOB(稍微大点的数据也可存储路径后io操作,缺点受路径影响)缺点笨重、		影响数据库内存  xxx.setBinarystream(2,inputstream);||先建inputstream后放入reader对象		xxx.setCharacterstream(2,reader);
    	mysql是TEXT
    
    javabean定义:1、public修饰的类,public无参构造2、属性为private,并且提供get、set方法。
    		封装数据,提高代码复用率
    
    servlet2.5使用需要在web.xml中配置路由
    	servlet3.0不需要配置,但在控制层的类前面加入注解@WebServlet("url地址")
    	2.5web.xml中通过load-on-startup设置数字来确定谁先执行初始化
    	3.0中在@WebServlet(load-on-startup=xx)
    
    url书写区别:<a href="a/add">请求会去src、webcontent中先找是否有a
    	     web.xml中的/ 代表项目根路径
    	     jsp中的/ 代表域名+端口号部分
    
    servlet生命周期:
    	加载(无需干预,自动)--初始化init方法(执行一次)--服务(service抽象方法)--销毁		destroy方法--卸载(无需干预,自动)
    
    web.xml中设置:
    	  在整个web容器中设置的参数
    	  <context-param>
              <param-name>xxx</param-name>
              <param-value>xxxx</param-value>
              </context-param>
    	  参数获得方式:在servlet中用ServletContext servletContext=super.getServletContext();
    		String string=servletContext.getInitParameter("参数名字");
    		System.out.println(string);
    
    	在当前servlet中设置的参数方式:
    	<servlet>
       	 <servlet-name>XXX</servlet-name>
        	<servlet-class>
    		XXXX
    		</servlet-class>
        	<init-param>
         	 <param-name>XXXXX</param-name>
          	<param-value>XXXXXXX</param-value>
        	</init-param>
       	 <load-on-startup>1</load-on-startup>
     	 </servlet>
    	参数获得方式:在servlet中用string a=super.getInitParameter("参数名字");
    
    接口的空实现好处:
    	不用 实现类---接口 用类继承---空实现类---接口
    	可以把接口中不用的方法不实现
    
    servlet中获取out、session、application的方法
    		Session session=(Session) request.getSession();
    		PrintWriter pWriter=response.getWriter();
    		application: ServletContext s=(ServletContext) request.getServletContext();
    		
    
    
    获取请求数据存入数据库时,查看数据库存入的数据乱码问题:jdbc:mysql://localhost/article?			useUnicode=true&characterEncoding=UTF-8
    
    jsp---java----class文件:在Tomcat的work文件夹中
    
    mysql实现分页:
    	mysql从第0页开始,oracle、sqlserver从第1开始
    	从第0页开始 假设每页10个数据:select * from stu limit 0,10;
    	通用格式:select * from table limit (当前页-1)*pageSize,pageSize;
    oracle分页、:select * from stu where sno>=(n-1)*10+1 and sno<=n*10;前提是数据是id连续的
    	伪列不能大于等于 解决办法 查询结果嵌套
    	办法:使用伪列select s.* from stu s order by sno asc;先排序
    	然后:select rownum ,t* from(select s.* from stu s order by sno asc)t
    		where rownum>=(n-1)*10+1 and rownum <=n*10;
    	最后:select * from(
    	select rownum r,t* from(select s.* from stu s order by sno asc)t
    		where rownum>=(n-1)*10+1 and rownum <=n*10;)t
    	)where r>=(n-1)*10+1 and r<=n*10;
    	优化性能:select * from(
    	select rownum r,t* from(select s.* from stu s order by sno asc)t
    		 where rownum <=n*10
    	)where r>=(n-1)*10+1 ;
    
    sqlserver2005+分页:rownum不能直接用,需要制定列为伪列:select * from(
    	select row_num() over(sno order by sno asc) as r,* from stu where r<=n*10
    	)where r>=(n-1)*10+1 ;
    
    sqlserver2003分页:top关键字 select top 3 * from stu;查询第一页数据 假如每页3条
    
    sqlserver2012+分页:offset fetch next only
    	select * from stu order by sno offset (页数-1)*页面大小+1 rows fetch next 页面大小 		rows only
    
    分页实现:需要5个变量(数据总量 select count(*)from stu;
    			、每页条数页面大小    用户定义
    			、总页数、		程序自动计算sum%xx==0?sum/xx:sum/xx+1
    			当前页页码、		用户定义
    			当前页的对象集合) list的查询集合
    
    获取所有表单数据的方法:
    	var data = $("form").serialize(); 
    
    return&return
    	在try中return,在finally执行前会把结果保存起来,即使在finally中有修改也以try中保存的值	为准,但如果是		引用类型,修改的属性会以finally修改后的为准;
    3、如果try/finally	都有return,直接返回finally中的	return.
    
    +/concat
    	+可以是字符串或者数字及其他基本类型数据,而concat只能接收字符串。
    
    +左右可以为null,	concat为会空指针。
    
    	如果拼接空字符串,concat会稍快,在速度上两者可以忽略不计,如果	拼接更多字符串建议用StringBuilder。
    
    从		字节码来看+号编译后就是使用了	StringBuiler来拼接,所以一行+++的语句就会创建一个StringBuilder,多条+++		语句就	会创建多个,所以为什么建议用StringBuilder的原因。
    
    序列化	
    	如果某个字段不想序列化,在该字段前加上transient关键字即可。
    
    一个基于JSON的API的response应该包含以下header
    	Content-Type:application/json; charset=utf-8
    
    设置自动刷新
    Response.setHeader("Refresh","1000;URL=http://localhost:8080/servlet/example.htm");
    
    如何实现JSP或Servlet的单线程模式?
    对于JSP页面,可以通过page指令进行设置。
    <%@page isThreadSafe=”false”%>
    对于Servlet,可以让自定义的Servlet实现SingleThreadModel标识接口。
    说明:如果将JSP或Servlet设置成单线程工作模式,会导致每个请求创建一个Servlet实例,这种实践将导致严重的性能问题(服务器的内存压力很大,还会导致频繁的垃圾回收),所以通常情况下并不会这么做。
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    	
    

      

  • 相关阅读:
    根据对象的属性排序数组
    将多维数组的元素全部取出,组成一维数组的方法
    微信公众号报错 config:invalid signature
    改造业务代码
    微信公众号调用扫一扫
    JQuery :contains选择器,可做搜索功能,搜索包含关键字的dom
    【转】超全功能测试方法集锦——(通用黑盒功能:测试新人必收攻略)
    Oracle 查看表空间的大小及使用情况sql语句
    oracle数据库 参数open_cursors和session_cached_cursor详解!
    使用MITab操作MapInfo地图文件
  • 原文地址:https://www.cnblogs.com/qinyios/p/11125006.html
Copyright © 2011-2022 走看看