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规 ...
随机推荐
- 高并发大流量专题---5、CDN加速
高并发大流量专题---5.CDN加速 一.总结 一句话总结: CDN就是多整几台节点服务器,选距离用户最近的服务器来给用户服务,实现的话可以用阿里云.腾讯云他们提供的功能,简单方便,妈妈再也不用担心我 ...
- Series序列
import pandas as pd '''Series序列:1.序列 的声明,指定index列标签2.查看列索引(index)和元素 (values)3.选择内部元素4.为元素赋值5.用Numpy ...
- golang的数据类型之字符类型
字符类型使用细节 1)字符常量是用单引号('')括起来的单个字符.例如:var c1 byte = 'a' var c2 int = '中' var c3 byte = '9' 2) Go中允许使用转 ...
- Scala中下划线的总结
1. 方法转化为函数 2. 集合中的每一个元素 3. 获取元组Tuple中的元素 4. 模式匹配 5. 队列 6. 导包引入的时候 7. 初始化变量 引用自:https://blog.csdn.net ...
- a标签的锚点链接
<a href="#creditor" class="clearfix nav_creditor"> <div class="sec ...
- [Fw]初探linux中断系统(1)
1. 重要接口 LDD上说,“内核维护了一个中断信号线的注册表,该注册表类似于I/O端口的注册表.模块在使用中断前要先请求一个中断通道(或者中断请求IRQ),然后在使用后释放该通道.” 撇开系统如何遍 ...
- Primeng UI框架中 分页组件用法
1.在当前模块或当前页面的对应的module.ts文件中引入相应组件模块,如:core.module.ts模块. import { PaginatorModule } from 'primeng/pr ...
- 二、JPA的注解
@Entity注类就表示实体类了.注意:必须要有@Entity注解,否则会报错. @Table里面的就是表名和类名进行映射. @Id标识主键列,@GeneratedValue主键生成策略配合@Id使用 ...
- Debug和Release区别(转)
地址:https://zhidao.baidu.com/question/629188090208609884.html 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题 ...
- win10 + VS2015 编译 ARPACK
step 1: 下载ARPACK , mingw-w64-install 和 mingw-get-inst-20120426.exe: step 2: 安装 MinGW-64默认安装路径即可. ste ...