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实例,这种实践将导致严重的性能问题(服务器的内存压力很大,还会导致频繁的垃圾回收),所以通常情况下并不会这么做。

  

web开发小知识的更多相关文章

  1. 移动端 Web 开发前端知识整理

    文章来源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/ 最近整理的移动端 Web 开发前端知识,不定期更新. ...

  2. 移动Web开发小技巧

    移动Web开发小技巧 添加到主屏后的标题(IOS) name="apple-mobile-web-app-title" content="标题"> 启用  ...

  3. React Native环境配置、初始化项目、打包安装到手机,以及开发小知识

    1.前言 环境:Win10 + Android 已经在Windows电脑上安装好 Node(v14+).Git.Yarn. JDK(v11) javac -version javac 11.0.15. ...

  4. WEB开发基本知识

    参考文献:http://www.cnblogs.com/xdp-gacl/p/3729033.html 一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示I ...

  5. java web开发必备知识

    从各种招聘网站的要求上筛选出了一些java开发的一些基本的要求,对照自身看看有哪些缺陷. java基础 既然是java web开发,java SE肯定要学好了. 多线程,IO,集合等,对队列,缓存,消 ...

  6. Web开发基础知识

    综述 最近开始Java Web方面的工作,千里之行始于足下,我们在开发过程中要善于总结自己遇到的问题.善于管理一些优秀的代码片段.本文的主要内容是Web开发的基础知识,对于大牛来说可以忽略,对于初入W ...

  7. 3.web开发入门知识

    /*web入门*/ /*互联网上常用的协议以及它的端口*/ http 80 http://localhost/    相当于    http://localhost:80/         http协 ...

  8. 移动web开发(一)——移动web开发必备知识

    参考: 移动终端开发必备知识.http://isux.tencent.com/mobile-development-essential-knowledge.html

  9. Web开发小妙招:巧用ThreadLocal规避层层传值

    摘要:我们可以在处理每次请求的过程中,无需从Controller以及Service中的方法层层传值,只需要直接通过该局部变量取值即可. 本文分享自华为云社区<拦截器中巧用ThreadLocal规 ...

随机推荐

  1. SVG开发包, 20 个有用的 SVG 工具,提供更好的图像处理

    20 个有用的 SVG 工具,提供更好的图像处理 SVG 现正在 Web 设计领域变得越发流行, 你可以使用 Illustrator 或者 Inkscape 来创建 SVG 图像. 但当进行 Web ...

  2. linux 命令参数列表过长以及find用法

    1.在一个目录下删除大批量的文件时,当使用 rm -rf 或者rm *会提示参数列表过长   通过修改命令为 :find . -name "*" | xargs rm -rf '* ...

  3. 109、TensorFlow计算张量的值

    # 当计算图创建成功时 # 你就可以运行这个计算图,然后生成一个新的张量 # 并且得到这个张量指向的计算图中具体的数值 #这个功能在debug的时候非常有必要 #最简单获得张量具体值的方法是使用Ten ...

  4. Frida Android hook native层__system_property_get的最终方案

    记录这个问题的起因是,在hook时遇到了修改内容长度,超过原长度时,会出现显示不全的问题. 比如把nexus 5改成nexus 100,只会显示nexus 1. 所以去读了下源码 int __syst ...

  5. 练习1-20 编写程序detab,将输入中的制表符替换成适当数目的空格.

    1.问题描述 编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方. 假设制表符终止位的位置是固定的, 换句话说每隔n列就会出现一个制表符终止位. 2.描述 ...

  6. Linux操作系统(一)_常用命令

    1.系统工作命令 date  显示/设置系统时间或日期 date:显示时间 date -s “20190319 11:35:56”:设置时间 clock  显示设置硬件时钟 clock -s:以硬件时 ...

  7. Codeforces 1114D(区间DP)

    题面 传送门 分析 法1(区间DP): 首先,我们可以把连续的相等区间缩成一个数,用unique来实现,不影响结果 {1,2,2,3,3,3,5,3,4}->{1,2,3,5,3,4} 先从一个 ...

  8. 【算法】快速数论变换(NTT)初探

    [简介] 快速傅里叶变换(FFT)运用了单位复根的性质减少了运算,但是每个复数系数的实部和虚部是一个余弦和正弦函数,因此系数都是浮点数,而浮点数的运算速度较慢且可能产生误差等精度问题,因此提出了以数论 ...

  9. SpringBoot-SpringCloud-版本对应关系

    刚开始研究SpringCloud和SpringBoot的时候,困惑点比较多,SpringBoot是从1.X.X到目前的2.X.X版本,但是SpringCloud基于SpringBoot,版本之间肯定是 ...

  10. git help