文章标题

来源:互联网 发布:java自带的观察者模式 编辑:程序博客网 时间:2024/06/05 15:57

一、Servlet基础
1、什么是WEB应用程序
Bs应用程序,基于浏览器服务器的访问模式,不同于cs应用(客服端服务器的模式 qq )

2、WEB程序运作的机制

3、WEB程序相对于传统cs程序的优点
►用户不需要更新应用程序
►几乎不占用用户的资源
►数据更安全

4、什么是CGI 通用网关接口,是运行在服务器上的一段程序,常用C/Perl编写
作用:提供同客户端HTML页面
CGI的请求/响应
调用CGI脚本程序
http:// host_name:port/cgi-bin/helloworld

5、什么是Servlet
一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面
Servlets的请求/响应
Tomcat服务器的作用:监听客服端的请求(担当的是serverSocket的作用)
Servlet容器 Tomcat目录结构 (tomcat、Resin、JBoss、WebSphere、WebLogic)
Servlet框架 重要接口及方法 api文档
类:HttpServlet 【方法:service、doGet、doPost】
接口:HttpServletRequest HttpServletResponse
ServletContext 访问容器中的各种资源

6、实现一个Servlet的步骤 案例
1、扩展HttpServlet抽象类
2、重写service方法 (一般是重写doGet方法 或者是doPost方法(或2个都重写))
(do**方法,是处理请求的方法,所有的请求会进入到do**的某一个里面)
3、配置xml文件(或注解)
4、获取信息(验证,输出信息到控制台)
5、处理结果

7、实现输出Hello World 案例
►web开发环境
►web项目结构

►发布项目的3种方式
1、将web项目文件件拷贝到tomcat的webapps 目录中

2、在conf目录中,新建
Catalina->localhost目录,在该目录中新建一个xml文件,名字可以随意取,只要和当前文件中的文件名不重复就行了,该xml文件的内容为:

list[0]=={list.get(0) }

List list2 = new ArrayList();
list2.add(“字符串”);
list2.add(book);
list2.add(list);
request.setAttribute(“list2”, list2);
jsp输出
list2[0]|{list2[1].bookName }==list2[1][bookName]|{list2[2][1] }
4、[]获取map集合的值
Map

<%pageContext.setAttribute(“a”,”1234”) %> //2个是等价的


<%=session.getAttribute(“b”)%>|sessionScope.bvalue使el{acopy }
—————-value值使用标签主体的方式设置值———————————-







${vr }

作用:删除作用域的属性值

作用:输出作用域的属性值

►条件标签 没有else标签和elseif标签


test属性的值为true,执行标签体,否则,不执行标签体(test的值可以直接写boolean值,也可以使用el表达式从作用域里面获取)
结合el表达式使用
el true
aaa
empty
23}”>400>23

类似于if elseif (switch case)

1111
2222
3333


111
222
otherwise


10 }”>id>10
20 }”>id>20
otherwise

►迭代标签
语法,类似于java里面的for循环,用来遍历集合

items 指定要遍历的集合
var 任意写,表示遍历的集合当前的一个值
varStatus 任意写,表示循环的状态(包含循环的次数)

遍历 list map
嵌入

►URL导入

作用:包含外部的资源

${v }
绝对URL: 用来访问Web应用程序之外的资源
相对URL: 用来访问同一Web应用程序内的资源

4、Mvc分页实现

5、自定义标签
用来封装重复的业务

►自定义标签的分类
没有body empty
有body JSP
有属性
►自定义标签实现步骤 3个步骤:
1、定义标签处理程序类 (JSP 1.2、 BodyTagSupport JSP 2.0、SimpleTagSupport)
public class MyTag1 extends BodyTagSupport
public int doEndTag() throws JspException {
System.out.println(“自定义标签实现类”);
return super.doEndTag();
}

2、定义标签描述文件 (web-inf目录下面定义*.tld)

*.tld文件的内容参考c.tld文件

3、使用标签 <%@taglib prefix=“tt” uri=“/WEB-INF/jspdev.tld”%>
<%@taglib prefix=”my” uri=”http://java.sun.com/jsp/mytags/core” %>
<%@ taglib prefix=”mytags” uri=”/WEB-INF/mytags.tld” %> //等于上面的导入

自定义标签执行的过程
jsp页面包含了自定义标签描述文件(tld文件),解析tld文件,根据标签的名字匹配tld文件里面的name属性对应的tag-class对应的标签处理类,进入到标签处理类里面

1、直接输出html文本
JspWriter out = this.pageContext.getOut();// 获取一个输出流
try {
for (int i = 0; i < 5; i++) {
out.println(“我是一个自定义标签”);
}
} catch (IOException e) {
e.printStackTrace();
}

2、获取主体内容输出
JspWriter out = this.pageContext.getOut();
// 获取标签的主体内容
String bodystr = this.bodyContent.getString();
try {
for (int i = 0; i < 10; i++) {
out.println(“主体:” + bodystr+”
”);
}
} catch (IOException e) {
e.printStackTrace();
}

3、有属性的自定义标签实现
自定义标签增加属性,首先要在标签实现类增加对应的属性(set、get),然后在tld描述文件进行描述

sid
true
true

6、案例:Jsp标签实现一个自定义下拉列表

十三、Ajax基本原理

1、不用ajax实现页面局部刷新的效果 ifram

2、什么是Ajax
Web开发一个流行的词汇,全称Asynchronous JavaScript and XML,异步的JavaScript和XML

3、Ajax的最大优点
可以实现页面数据的局部更新
4、在哪里用到ajax
5、Ajax的交互流程

1、dom事件创建XMLHttpRequest对象
2、使用XMLHttpRequest对象发送数据给服务器

6、Ajax实例开发步骤 案例:用户名是否存在
XMLHttpRequest对象的方法、属性(参考ppt)
open(method, url, asynchronous)
setRequestHeader:设置HTTP请求的头信息
send(parameter)
同步、异步的区别

7、案例

8、Jquery ajax实现
dom对象.load(url, [data], [callback]) 以ajax的方式载入远程url地址返回的html数据,并写入到一个dom对象里面
url 远程url地址 (必须)
data 客服端传给服务器的数据
callback 回调函数

.get(url,[data],[callback],[type])urlurl()datacallbacktypevarurl=AjaxServlet.servlet?sheng=hn;.get(url, function(data) {//data就是服务器完全返回的数据
alert(data);
});

.post(url,[data],[callback],[type])使getvarurl=AjaxServlet.servlet;.post(url, { sheng: “sx”} , function(data) {//data就是服务器完全返回的数据
alert(data);
});

十四、JSON数据结构

1、JSON是什么
JSON:(JavaScript Object Notation)即JavaScript对象命名。JSON是JS的一种简单数据格式,JSON是JavaScript原生格式,它是一种严格的js对象的格式,JSON的属性名必须有双引号,如果值是字符串,也必须是双引号,JSON是JavaScript 对象表示法(JavaScript Object Notation),使用 JavaScript 语法,无需额外的软件就能处理 JSON数据。
JavaScript默认将JSON当做一个对象处理。
JSON 是存储和交换文本信息的语法。类似 XML。
JSON 比 XML 更小、更快,更易解析。

2、JSON作用
用来在网络上面实现客户端与服务器端数据进行交互

3、JSON语法
JSON只有两种结构:对象和数组,由这两种结构嵌套和组合来表示各式各样的数据
►第1种:JSON对象语法:可以有多个“属性/值对”,由逗号分隔
对象语法:特点 {“键”:值,”键”:值}
{“name”:”Bill Gates”,”status”:”online”,”level”:”gold“}

获取json对象属性的值:对象名.属性名

//json对象的语法 (键是字符类型,值可以是任意类型)
var jsonobj={“a”:”AAA”,”B”:”BBB”,”C”:23};//json对象
document.write(jsonobj.a);//获取json对象属性的值 对象名.属性名
document.write(jsonobj.B);
jsonobj.lsdjlk=true;//给jsonobj对象增加一个名字为lsdjlk的属性 对象名.属性名=值 (属性名任意写)

document.write(jsonobj.lsdjlk);

var jsonobj2={};//定义一个json对象
jsonobj2.a1=”AAA”;
jsonobj2.a2=10000;
jsonobj2.a3=jsonobj;
document.write(“
”+jsonobj2.a1);
document.write(“
”+jsonobj2.a2);
document.write(“
”+jsonobj2.a3.a);

var obj={};
►第2种:JSON数组语法:可以包含一个或多个JSON对,由’[’开始,’]’结束,值用逗号(,)分开
数组表示法特点: [] 等同于javascript里面的数组 new Array()
[‘wangwu’, ‘40’];

var arr=[];

//json数组的语法 == js里面的数组
var jsonarr=[1,2,3,4,5];//定义一个json数组
document.write(jsonarr[2]+”
”);//获取json数组的值 对象名[下标]
var jsonarr=[1,”QQ”,true];//定义一个json数组
document.write(jsonarr[1]+”
”);
var jsonarr=[1,”QQge”,[1,”AA”],{“a”:111,”b”:”BBBB”}];//复杂的json数组
var jsonarr2=[{“a”:”AA”,”b”:”BB”},{“a”:{“a1”:[1,2,{“ttt”:”TTTT”}]},”b”:”B111”}];//复杂的json数组
document.write(jsonarr2[1].a.a1[2].ttt+”
”);
///////////////////
var jsonarr3=[];
jsonarr3[0]=1000;
jsonarr3[10]=”RR”;//不会下标越界
jsonarr3.push(true);
alert(jsonarr3.length);

►JSON 取值可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在方括号中)
对象(在花括号中)

4、Js格式转JSON数据格式 (myJSONtext =’[1,2,3,4]’;) 条件:js字符符合json格式
2种方式js字符转json对象
1、使用js的eval函数进行转换 var myObject = eval(‘(‘ + myJSONtext + ’)’);
//js字符转json对象
var s = “[111,222,333]”;//不是json数组,而是符合json数组格式的js字符串
//把符合json格式的js字符转换为json格式的对象,2种方式转换 (1、使用eval哈拿书)
document.write(s[1]+”
”);//错误的
s=eval(“(“+s+”)”);//把js字符转换为json格式
document.write(s[1]);

2、使用第3方的json.js文件 JSON.parse(myJSONtext ); //建议使用
//使用json.js把js字符转换为json格式
var s = “{\”a\”:12,\”b\”:\”AAA\”}”;//双引号里面嵌入双引号,要使用反斜杠进行转义
s = JSON.parse(s);
document.write(s.b);

5、JSON对象转换Js
引入json.js文件
var jsonObj = {“name”:”wangwu”};

jsonObj.toJSONString()

//json对象转js字符
var jsonstr=[1,2,3,{“a”:1234}];
document.write(“
”);
document.write(jsonstr[2]+”
”);//3
jsonstr=jsonstr.toJSONString();//把json格式数据->js字符
document.write(jsonstr[2]+”
”);//错误的

6、服务端使用JSON java程序里面操作json
在服务器端(java程序)操作json格式数据,要依赖第三方的jar包

服务器端使用json-lib解析Json数据步骤
1、引入相关的jar包

2、使用JSONObject类的对象操作JSON对象
JSONArray 用来转换json数组格式的数据
get方法 根据下标获取JSONArray 对象里面的值
JSONObject用来转换json对象格式的数据

///把符合json格式的java字符串——》java对象
String a = request.getParameter(“a”);// [1,2,3,4,5] json数组格式
System.out.println(a);// [1,2,3,4,5]
JSONArray strobj = JSONArray.fromObject(a);// 把符合json格式的字符串——》JSONArray对象

System.out.println(strobj.get(1));// 根据下标获取JSONArray对象里面的值

String a2 = “[{\”a\”:\”AA\”,\”b\”:\”BB\”},{\”a\”:\”aaaaaa\”,\”b\”:\”bbbbb\”}]”;
JSONArray arobj = JSONArray.fromObject(a2);//把符合json格式的字符串——》JSONArray对象

System.out.println(arobj.get(0));//{“a”:”AA”,”b”:”BB”}

String a2 = “[{\”id\”:12,\”name\”:\”BB\”},{\”id\”:23,\”name\”:\”bbbbb\”}]”;
JSONArray arobj = JSONArray.fromObject(a2);// 把符合json格式的字符串——》JSONArray对象
System.out.println(arobj.get(0));// {“id”:12,”name”:”BB”}
String sss = arobj.get(0).toString();// 符合json对象格式的java字符串// {“id”:12,”name”:”BB”}
// 把符合json对象格式的java字符串——》java的对象
User user = (User) JSONObject.toBean(JSONObject.fromObject(sss),User.class);// 把符合json对象格式的java字符串——》java对象,条件是:java字符串里面的属性名字和转换的目标对象属性名字一致,且取值的类型要一致

System.out.println(user.getId() + user.getName());

// /////////////////////////////////
a2 = “[{\”id\”:12,\”name\”:\”BB\”},{\”id\”:23,\”name\”:\”bbbbb\”}]”;
// 直接把a2字符串转换为java对象, java对象结构 list集合里面对应多个对象
// 数组对应集合 数组里面的每一个对象,对应list集合里面的一个对象
Collection list = JSONArray.toCollection(JSONArray.fromObject(a2), User.class);
for (User u : list) {
System.out.println(u.getId() + u.getName());
}

///java对象——》符合json格式的java字符串
// 测试json可以直接在java类里面测试,不一定在servlet里面
// java对象——》符合json格式的java字符串
User user = new User();
user.setId(100);
user.setName(“刘德华”);
user.setPwd(“1234”);
// JSONObject.fromObject 可以把字符串——》JSONObject对象
// ,也可以把java对象——》JSONObject对象
JSONObject str = JSONObject.fromObject(user);

System.out.println(str.toString());

// JSONObject.fromObject 可以把字符串——》JSONObject对象
// ,也可以把java对象——》JSONObject对象
JSONObject str = JSONObject.fromObject(user);
System.out.println(str.toString());
// //////////////////////////////////////
List list = new ArrayList();
for (int i = 0; i < 10; i++) {
User ur = new User();
ur.setId(100 + i);
ur.setName(“刘德华” + i);
ur.setPwd(“1234” + i);
list.add(ur);
}
// 把java里面的list集合——》符合json数组格式的数据
JSONArray jlist = JSONArray.fromObject(list);
System.out.println(jlist.toString());


网上书城案例
Web QQ
招标询价系统