Client Server Browser Server <script> var _array = new Array(); <c:forEach items="${strs}" var="_item" varstatus="_status"> _array[${_status.index}]='${_item}'; </c:forEach> var _array = new Array(); _array[0] = 'a'; _array[1] = 'b'; </script> <html> <head> <title> <script> alert(testFunction); testFunction(); </script> </head> <body> <script> function testFunction(){ alert(1); } </script> </body> 1、所有的后台逻辑都是运行在web server中(jsp) 2、浏览中运行的是纯的html 3、浏览器请求,服务器响应 沙盒 33 ServerSocket server = new ServerSocket(9999); while(true){ Socket client = server.accept(); InputStream clientIn = client.getInputStream(); OutputStream clientOut = client.getOutStream(); // 从clientIn中获取浏览器发过来的web请求 String requestStr = "xxxx"; // 从requestStr中获取目标服务器的域名(www.sina.com.cn)和端口(80) Socket serverSocket = new Socket("www.sina.com.cn",80); InputStream serverIn = serverSocket.getInputStream(); OutputStream serveOut = serverSocket.getOutputStrea(); serverOut.write(requestStr.getBytes()); serverOut.flush(); // 从serverIn中获取服务器(www.sina.com.cn)的响应 String responseStr = "xxx"; clientOut.write(responseStr.getBytes()); clientOut.flush(); } <% xxx %> 作用域对象中(request session servletContext) setAttribute("abc",value) ${abc} forEach choose when otherwise set servlet 重定向 转向 RequestDispatcher JavaBean 单例模式 工厂模式 DOM SAX DOM模型 Document classpath=.;c:\abc\test.jar(1.4 HelloWorld.class);c:\temp\1.7HelloWorld.class path javac java(1.6) HelloWorld.class <classes> <class> <student code=""> <sex></sex> <name></name> </student> <student code=""> <sex></sex> <name></name> </student> <student code=""> <sex></sex> <name></name> </student> </class> <class> <student code="001"> <sex>女</sex> <name>李四</name> </student> <student code="002"> <sex>男</sex> <name>王五</name> </student> <student code=""> <sex></sex> <name></name> </student> </class> <class> <student code=""> <sex></sex> <name></name> </student> <student code=""> <sex></sex> <name></name> </student> <student code=""> <sex></sex> <name></name> </student> </class> </classes> jQuery 方便编写js代码,有部分的特效实现 Function也是对象 1、添加一个商品 2、修改商品的数量 public void editCount(Shop shop, int count){ ShopItem item = items.get(shop.getId()); if(item == null){ item = new ShopItem(); items.put(shop.getId,item); } item.setShop(shop); item.setCount(count); } 3、删除某个商品 4、查看所有商品 5、清空购物车 ShopItem Shop shop; int count; ShopCar private Map<String,ShopItem> items; // 5个方法
request.setC("UTF-8")// post String str = ""; byte[] bytes = str.getBytes("iso-8859-1"); str = new String(bytes, "UTF-8"); 包装器 String id = "2"; Integer.parseInt(id); query.query("select * from test where id=?" ,id) PreparedStatement pstmt.setString() 过滤器链 Listener 1、在线人数的管理 2、页面的点击次数(servlet/jsp/html) 1)哪个地方累计次数 request产生的时候加1 --》RequestListener --》1、获取页面标记 2、根据标记递增db的count --》path(URL) 2)数据保存在哪里(DB) render 渲染 obj= request.responseXML// Document 一个请求唯一对应一个Servlet Servlet可以响应多个请求 list.size() 30 Object obj = list.get(i); list.size() 30 ConnectionPool private int currConnCount = 0; private int max = 10; private List<Connection> pools = new ArrayList<Connection>(); private static ConnectionPool connPool = null; private ConnectionPool(){ init(); } public static ConnectionPool getInstance(){ if(connPool == null){ connPool = new ConnectionPool(); } return connPool; } 获取连接 public Connection getConnection(){ Connection conn = null; // 判断pools中是否有连接 // 如果有 // 从pool中获取,从pool中删除获取的connection // 如果没有 // 产生一个新的连接返回 // 3)DriverManager.getConnection(xxxx); return conn; } 释放连接 public void freeConnection(Connection conn){ // pools.add(conn); } private void init(){ // 读配置文件初始化 // 1)加载驱动 2)url userName password } public void setMax(int max){ this.max = max; } 单元测试