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实例,这种实践将导致严重的性能问题(服务器的内存压力很大,还会导致频繁的垃圾回收),所以通常情况下并不会这么做。
web开发小知识的更多相关文章
- 移动端 Web 开发前端知识整理
文章来源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/ 最近整理的移动端 Web 开发前端知识,不定期更新. ...
- 移动Web开发小技巧
移动Web开发小技巧 添加到主屏后的标题(IOS) name="apple-mobile-web-app-title" content="标题"> 启用 ...
- React Native环境配置、初始化项目、打包安装到手机,以及开发小知识
1.前言 环境:Win10 + Android 已经在Windows电脑上安装好 Node(v14+).Git.Yarn. JDK(v11) javac -version javac 11.0.15. ...
- WEB开发基本知识
参考文献:http://www.cnblogs.com/xdp-gacl/p/3729033.html 一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示I ...
- java web开发必备知识
从各种招聘网站的要求上筛选出了一些java开发的一些基本的要求,对照自身看看有哪些缺陷. java基础 既然是java web开发,java SE肯定要学好了. 多线程,IO,集合等,对队列,缓存,消 ...
- Web开发基础知识
综述 最近开始Java Web方面的工作,千里之行始于足下,我们在开发过程中要善于总结自己遇到的问题.善于管理一些优秀的代码片段.本文的主要内容是Web开发的基础知识,对于大牛来说可以忽略,对于初入W ...
- 3.web开发入门知识
/*web入门*/ /*互联网上常用的协议以及它的端口*/ http 80 http://localhost/ 相当于 http://localhost:80/ http协 ...
- 移动web开发(一)——移动web开发必备知识
参考: 移动终端开发必备知识.http://isux.tencent.com/mobile-development-essential-knowledge.html
- Web开发小妙招:巧用ThreadLocal规避层层传值
摘要:我们可以在处理每次请求的过程中,无需从Controller以及Service中的方法层层传值,只需要直接通过该局部变量取值即可. 本文分享自华为云社区<拦截器中巧用ThreadLocal规 ...
随机推荐
- docker 应用
在ubuntu安装docker 编写Dockerfile (用来操作容器) FROM java:8 #获取java官方镜像 jdk版本为1.8 VOLUME /tmp # 数据存储目录,容器退出后数据 ...
- EasyUI 的日期控件单击文本框显示日历
注意:可 用 ctrl+f 搜索 "_outerWidth():0" 1. jQuery.easyui.min.js1.3.2 版本 function _745(_746,_7 ...
- 使用vue的extend自定义组件开发
index.js import Vue from 'vue' import tip from './tip.vue' const Constructor = Vue.extend(tip); cons ...
- 解决div和img之间的空隙
div盒子和img之间有空隙之前也遇到过几次这问题,今天又遇到了特地来总结下. 先上代码和效果图: <!doctype html><html lang="en"& ...
- WebAPI 生成验证码
private HttpResponseMessage CreateCheckCodeImage(string checkCode) { HttpResponseMessage result = ne ...
- 一、bootstrap-select输入选择框
一.bootstrap-select简单使用 <!DOCTYPE html> <html lang="en"> <head> <meta ...
- test命令-linux shell 脚本
#!/bin/bash # This is program will check you file name,which sys has or not,end print types. #2019/0 ...
- Linux查询Java进程以及杀掉其进程
今天公司VPN掉线后,访问项目出错502. 百度了说是nginx代理错误,但入职不久不知道咋搞... 于是乎就想重启一下Java应用. 1.找到Java应用的进程 jps 命令 和 ps - ...
- loadrunner 11安装教程
见百度经验,大神教程 https://jingyan.baidu.com/article/da1091fb199da7027849d6ff.html
- Hybrid App技术解析 — 原理篇
Hybrid App技术解析 — 原理篇 原文出处: https://segmentfault.com/a/1190000015678155 引言 随着 Web 技术和移动设备的快速发展,Hybr ...