第一章java web开发概述
胖客户端CS,瘦客户端BS(Browser)
网址请求---服务器处理响应-----返回结果-----浏览器显示
CGI可以动态生成页面,但是每个进程都要启动一个CGI程序的系统进程,并在系统进程中启动一个jvm,开销大,执行效率低;java servlet只需要启动一次服务器进程,加载一次JVM,之后再加载另外的类,这样降低了开销,加载类可以处理多个相同请求,servlet能直接与web服务器交互。但是servlet嵌入了HTML标签和表达式,修改文件,就需要重新编译源文件。JSP(java server page)servlet结合了动静态的HTML技术,jsp先被jsp引擎转换成java源代码,在编译成可执行的二进制字节码,接收到客户请求后,执行上面的二进制字节码的jsp文件。
第二章 搭建javaweb开发环境
JDK包括JRE。Myeclipse 包括eclipse,还增加了一些封装好的插件,更好用。
环境搭建步骤:安装jdk,设置环境变量JAVA_HOME为安装目录,添加到Path环境变量 jdk的bin路径----安装eclipse+myeclipse插件,或者直接安装myeclipse程序,下载tomcat服务器,解压设置环境变量CATALINE_HOME为安装路径,添加bin目录路径到Path环境变量。---新建工程,在myeclipse上新建web工程-----部署到tomcat,手动复制到tomcat的webapp文件夹下,或者在myeclipse上window|preferences添加tomcat,将工程add到tomcat-----运行tomcat服务器,输入网址访问网页。
也可以导出为war文件复制到webapp文件夹,tomcat自动完成解包部署工作。
在myeclipse中window|perference中设置tomcat为debug模式,在myeclipse中启动tomcat,可以调试程序。
第三章 深入servlet技术
GET方式常用于查询信息,查询内容显示在地址栏中,信息不安全,且提交内容不能超过256个字节。Post方式常用于提交数据,需要提供数据类型和长度,无长度限制,不显示在地址栏,安全。
Web.xml配置:servle-name(创建的servlet类的名称HelloServlet,文件中唯一),servle-class(带包名称的类路径:com.bclfirst.HelloServlet),在servlet-mapping中配置url-pattern(/servlet/HelloServlet)设置servlet的访问方式,http://ip:port/webapp下文件夹名称/url-pattern (http://127.0.0.1/FirstWeb//servlet/HelloServlet.jsp)即为url访问路径。HelloServlet.jsp的后缀可以用通配符*表示任意的后缀。
请求和响应:HttpServletRequest中包含了发出请求的客户端的ip端口、系统、tomcat服务器、servlet路径、类名等信息。HttpServletresponse响应用户请求,PrintWrite out=response.getWtiter(); out.println()打印输出html显示输出结果。
生成图片验证码的关键步骤:Random对象生成随机数和随机颜色RGB值,BufferImage创建一个彩色图片,Graphic2D对象绘制图片颜色和验证码字符串。JPEGImageEncoder对象转换格式,ServletOutputStream对象的flush()函数打印输出。
获取web文件参数:getInitParameter(Stirng param)获取web.xml中通过 资源注射(@Resourse):private @Resourse(name =”addas”) String message;自动获取web.xml文件中的变量,配置方式是 搜索引擎:采用雅虎的yahoo_search-2.0.1.jar加入到lib文件夹下,import com.search.SearchClient ,调用SearchClient.imageSearch(ImageSearchRequest )检索。 上传文件:FORM默认的数据类型enctype是application/x-www-form-urlencoded 表示ASCII码,上传文件时应该设置为multipart/form-data二进制文件格式。使用Apache Commons Upload类库。 上传进度读取: Servlet生命周期:在服务器启动(load-on-startup为1)或第一次请求(load-on-startup为0)初始化一个servlet对象,执行init()函数;在服务器关闭时销毁对象,执行destory() 函数。中间每个请求启动一个线程执行service方法。 注解@PostConstruct在servlet构造函数和init之间运行,注解函数@PreDestory在destory()函数之后执行。Web.xml中设置metadata-complete=“true”表示启动服务器时要去检测工程class文件和jar是否使用了注解。 转向(Forward)RequestDispatcher rd = request.getRequestDispatcher(String to)可以跳转到文件、jsp、其他servlet,rd.forward(request,response)转向指定的; 重定向(Redirect):response。sendRedirect(String loacation)集合了setStatus()(设置重定向状态为302临时重定向,301永久重定向。)和setHeader()(设置重定向的地址)。客户端请求两次,第一次返回状态和地址,第二次访问访问真实地址。 自动刷新:Response.setHeader(“Refresh”,”1000;URL=http://localhost:8080/servlet”); Servlet线程不安全问题:因为servlet只有一个实例,多线程时调用相同的doGet方法,如果多个线程同时写一个公共的私有变量,获取变量值时会出现不同步的问题。只读没问题。 第四章深入JSP技术 4.1JSP概述 JSP(java server page)也是一种servlet,是HTML代码和java代码的混合,无需使用out.println函数。直接复制到tomcat文件夹下,通过路径名称访问,无需web.xml文件。第一次请求jsp文件时,先被转换为java源代码,然后被编译为class类文件,运行class文件响应请求。以后不再重新编译。除了init和destroy外还有自己的_jspInit()和_jspDestory()方法。 4.2JSP语法 Jsp分为模板数据,指HTML输出样式;元素指java部分,包括脚本scriptlet、指令derective、标签tag; Jap脚本:脚本用<% %>括起来,中间是java代码。使用out.println输出。 <%@ page language=”java” contentType=”text/html,charset=utf-8”%>
<%
int num=10;
out.println(“数字”+num+“阶乘为:”+resault);
%>
jsp输出:或者用<% =%>输出,例如:数字<% = num%>的阶乘为:<% = resault %>
jsp注释:用//或者/**/或者<% -- --%>
jsp声明方法和全局变量:在<%! %>内声明一个或多个方法和变量。
Jsp if for while return break语句:这些语句可以和HTML语句混合,但必须被<% %>包括在内,才能穿插其中。Return 之后的代码不会执行,包括