JSP应用技术与ajax 知识点总结
Java基础:
- try…catch
Try{
调用DAO层代码时,一般需要异常处理
}catch(Exception e){
e.printstacktrace();
}
在dao层,方法需要抛出异常,异常可以在service层,处理,也可以在action中直接处理
String StringBuffer StringBuilder
StringBuffer str=new StringBuffer(“”);
str.tostring();
str.append(“ ” );
StringBuider str =new Stringbuider (“” );
str.append(“ ”);
str.toString();
2.List
List继承collection接口
Listlist =new ArrayList();
List.add();//添加对象
List.size();//对象个数
List.get(i)//取对应的i的对象
List遍历输出结果的三种方式
LIstuserlist=new ArrayList();
User user1=new User();
User user2 =new User();
List.add(user1);
Lsit.add(user2);
(1)通过迭代器:
Iterator a =list.iterator();
While(a.hasnext()){
User user =new User();
user=a.next( );
就可以使用user对象
}
(2)加强for循环(常用)
For(User user:list){
直接可以一个一个的使用list中的user对象了
}
(3)普通循环:
For(int i=0 ;i<list.size();i++){
User user=list.get(i);
就可以使用user对象了
}
Map:
Map<String ,String> map= new HashMap<String,String>();
map.put(“想起你”,”xiangqini”);
map.put(“ ”, ‘’ ’’);//map中添加元素
map.get(“想起你”)//根据key得value
map.remove(“想起你”)//根据key删除元素
遍历:
使用Iterator遍历
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry<Integer, Integer> entry = entries.next();
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
I/O : PrintWriter
设置格式
Response.setContentType(“text/html;charset=utf-8”);
Response.setcharacterEncoding(“utf-8”);
PrintWriter out = response.getWriter();
Servlet重点
1、tomcat
工作目录:
(1)webspps(创建web工程)放置web工程
所谓的web工程就是容器下的一个文件夹
该文件夹要满足所使用的容器(tomcat)要求:
Web工程目录下一定要有WEB-INF文件夹
WEB-INF文件夹里必须要有web.xml配置文件
配置一个servlet如下:
ShowSession
kownSession.ShowSession
ShowSession
/ShowSession
(2)conf:信息配置文件(tomcat默认的)
Context.xml
Web.xml*
Server.xml*(配置端口号)
Tomcat-users.xml
(3)bin
Startup.bat 开启服务器
Shutdown.bat关闭服务器
(4)Lib
写工程时需要的一些jar包
目前用到的
jstl-1.2
mysql-connector-java-5.1.34
servlet-api
(5)work:生成的临时文件(如:jsp翻译出来的servlet以及字节码文件(.class))
(6)logs:
tomcat日志错误排查
(7)temp:临时文件
2、servlet的生命周期
1.第一次请求某个servlet时tomcat创建servlet对象(过滤器是开启服务器时),下一次访问就不用创建对象了。调用的是构造方法
2.初始化操作,调用init()//给定一些初始值,或者起名的操作
3.业务处理方法(service())根据请求类型不同分配不同的方法
Doget();
Dopost();
3.销毁(destroy())
1.tomcat关闭
2.Tomcat容器出现error
由创建到销毁是servlet生命周期
补充:
单例模式:某个类的对象只有一个
3、request对象和response对象
二者实现参数的传递
页面->servlet
1.通过url,get方式(可以使用a标签)
2.form表单method=”post/get”
3.HttpServletRequest接受页面传来的参数
请求转发
Request.getParameter(String name);//文本,密码,单选框
启用<input type=“radio” name="_add" value=“1” <c:if test=" u s e r . p o w e r . a d d = = 1 " > c h e c k e d = " c h e c k e d " < / c : i f > > 未 启 用 < i n p u t t y p e = " r a d i o " n a m e = " a d d " v a l u e = " 0 " < c : i f t e s t = " {user.power._add==1}">checked="checked"</c:if>> 未启用<input type="radio" name="_add" value="0" <c:if test=" user.power.add==1">checked="checked"</c:if>>未启用<inputtype="radio"name="add"value="0"<c:iftest="{user.power._add==0}">checked=“checked”</c:if>>
Integer userid = Integer.parseInt(str_userid);//字符串转整型
Request.getParameterValues(String name);//获取一个String数组,主要是对于复选框
sb.append("篮球<input type=\"checkbox\" name=\"goods\" value=\"1\" >");
sb.append("足球<input type=\"checkbox\" name=\"goods\" value=\"2\" >");
sb.append("排球<input type=\"checkbox\" name=\"goods\" value=\"3\" >");
4.HttpServletResponse向前台页面反应
Response.setContentType(“text/html;charset=utf-8”);
Response.setcharacterEncoding(“utf-8”);
PrintWriter out = response.getWriter();
Out.print();
Out.write();
重定向
4、post和get的区别:
Post->doPost()方法
Get->doGet()方法
public class revision1 extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);//将dopost所有业务委托给doget
}
}
(1)
get请求会把input中(?name=value&name=value)拼接到url后面
而post方法没有
(2)
Get请求的参数url有长度限制,最大8192个字节,post没有长度限制
(3)
Get请求不安全,post安全系数高(用户注册登录)
(4)get执行效率高于post
5、cookies sessions application
cookie :
将页面子页面的信息存储到客户端的cookie文本中。
客户端浏览器内存中。(不设置最大生命周期)
Cookie cookie = new Cookie(key,value);value只能是文本
cookie…setMaxAge(生命周期);
response.addCookie(cookie);
Cookie定义:浏览器向客户端写入的文本(txt),保存到客户端的一个文本文件中的名 值对,与特定客户相关(每个浏览器写入的文件都不相同)
名值对(key-value):例如user = 123,password = 123456,……
实现Cookie存储的两种方式:存储在浏览器内存中、存储在txt文件中
存入:
for(int i=1;i<=3;i++) {
Cookie cookie=new Cookie(“name”+i,“value”+i);
cookie.setMaxAge(5000);//为cookie设置生命周期,才会被保存到 浏览器的cookie文本文件中
response.addCookie(cookie);
}
取:
Cookie []cookies=request.getCookies();
int i=1;
for(Cookie cookie:cookies) {
sb.append("");
sb.append(""+i+"");
sb.append(""+cookie.getName()+"");
sb.append(""+cookie.getValue()+"");
sb.append("");
i++;
}
session :
将页面子页面的信息存储到服务器端的内存当中。
一个浏览器窗口(包括子窗口)一个session。
HttpSession session = request.getSession(true);
session.setAttribute(key,value);
session.getAttribute(key);
Session生命周期
可以通过程序来终止一个会话。如果客户端在一定时间内没有操作,服务器自动终止会话。
(我们第一次访问web应用的时候创建session对象,
当你关闭浏览器的时候,session清空,过期
清空历史纪录时,关闭web服务时,session清空
或者session过期时)
cookie与session的联系和区别:
1.存放位置不同
2.存取方式不同,cookie只能存放文本消息(String)
3.Cookie对客户端是可见的,session客户端不可见
4.Session关闭了浏览器会话就结束了,session就会失效,id也会消失
Cookie可以设置保存很长时间
5.session依赖于cookie(分配给session一个id存在客户端的文本,下一个请求,连同id一块发送到服务器端,创建Session的时候会把SessionId保存在Cookie中)
6.若禁用了cookie
1.在Jsp/Servlet中,如果浏览器不支持Cookie,可以通过URL重写来实现,就是将一些额外数据追加到表示会话的每个URL末尾,服务器在该标识符与其存储的有关该会话的数据之间建立关联。如hello.jsp?jsessionid=1234
2.重写url
servlet中html标签赋值时<a href=“showCookies”>需要加两个斜杠
//encodeURL方法用在链接地址、表单提交地址。
response.encodeURL(String url);url放相同目录下,即将要访问的下一个路径如
response.encodeURL(‘’choose”)此方法会在some后面添加sessionId
//encodeRedirectURL方法用于重定向地址。
response.encodeRedirectURL(String url);
application :
web工程的共享数据,存储在服务器端
ServletContext application = this.getServletContext();
application.setAttribute(key,value);
application.getAttribute(key);
- 用于保存整个WebApp的生命周期内所有客户端都可以访问的数据
- 从web应用启动到web应用关闭(通过HttpServlet.getServletContext()可以拿到)
- 在API中表现为ServletContext
统计网站的访问次数:
– 1. 存在数据库 – 2. 文件 – 3. Application - 取值
application.getAttribute(String key)
1.存值(设置相关属性)
application.setAttribute(String key)
ServletContext application=this.getServletContext();//这里也可以用super,因为没有对此方法重新,this/super都是调用的httpServlet中的方法,用HttpServlet也可以
//当第一次进入这个程序访问时,o_count一定为NULL
Object o_count=application.getAttribute(“count”);
Integer count;
if(o_count==null) {//第一次访问
count=1;
application.setAttribute(“count”, count);
}else {//不是第一次访问
count=(Integer)o_count;
count=count+1;
application.setAttribute(“count”, count);
}
6、请求转发与重定向
mvc设计模式
model
view
controller 三层结构:
action/controller
service
dao
jsp : jsp 跟Servlet联系,jsp程序运行原理
1、 jsp 指令
<%@include %>(静态包含) 与 jsp:include(动态包含) 区别
2、 jsp 脚本
<%= <% <%!
3、 jsp的九大内置对象(*)
4、 四大域对象
PageContext -> Request -> Session -> Application
get/setAttribute
PageContext.findAttribute
5、 el表达式
${} -> javaBean -> field name
6、 jstl
jstl的使用环境搭建
<c:if>
<c:forEach>
<c:choose>
…
7、 监听器 listener
监听域对象的创建与销毁
监听域对象的值变化
绑定与解绑
钝化与活化
8、 过滤器
使用过滤器完成权限系统的升级。
9、 登录、注册、列表增删改查
列表页新增功能、删除功能的实现。
10、javabean
封装
11、jdbc
- 基本应用
Connection
Statement
PreparedStatement
ResultSet
操作数据库的步骤
- 事务操作
事务原理:原子性、一致性、隔离性、持久性
事务的并发问题:虚读、幻读、不可重复读
事务的隔离级别:1 2 4 8
应用:转账