[计算机软件及应用]学习笔记点滴javaweb.doc

上传人:sccc 文档编号:4561817 上传时间:2023-04-27 格式:DOC 页数:90 大小:681.03KB
返回 下载 相关 举报
[计算机软件及应用]学习笔记点滴javaweb.doc_第1页
第1页 / 共90页
[计算机软件及应用]学习笔记点滴javaweb.doc_第2页
第2页 / 共90页
[计算机软件及应用]学习笔记点滴javaweb.doc_第3页
第3页 / 共90页
[计算机软件及应用]学习笔记点滴javaweb.doc_第4页
第4页 / 共90页
[计算机软件及应用]学习笔记点滴javaweb.doc_第5页
第5页 / 共90页
点击查看更多>>
资源描述

《[计算机软件及应用]学习笔记点滴javaweb.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]学习笔记点滴javaweb.doc(90页珍藏版)》请在三一办公上搜索。

1、课程介绍 javawebxml javaweb基础数据库和JDBC javaweb高级部分项目ssh 三大框架 Strust2 spring hibernate 及其相关技术android 基础知识 项目明天休息 ! 反射 : 反射就是加载类 ,并剖析出类的各个组成部分 。加载类 :1. Class clazz = Class.forName(“类的完整名称(没有.java后缀名)”);2.Class clazz1 = new Person().getClass();3.Class clazz2 = Person.class;私有的构造方法不可以被外界访问,但是反射可以做到。xxx.setAc

2、cessible(true); /暴力反射2012-3-5Xml : 1. 扩展标记语言 ,被设计的宗旨是传输数据,而不是显示数据2. Xml标签没有被预定义,需用户自定义 3. parser解析器4. 元素必须有起止标签 ,不能省略 。5. 标签不允许交叉嵌套6. 必须有且只有一个跟标签7. 声明必须出现在第一行 encoding 默认为UTF-8 .8. xml中不会忽略回车 空格 换行。9. 磁盘上保存的编码要与xml声明的编码一致10. 标签严格区分大小写 ,名字只能以字母或者下划线开头11. 不能将xml作为标签,xml是W3C保留日后使用的。12. 名称之间不能有空格或者制表符。不

3、能使用冒号。13. 元素的属性值一定要用引号(单引号 双引号都可)14. xml的注释个是为,注释不能出现在xml声明之前。15. CDATA区的作用是把标签当作普通的文本来处理。语法: 。约束 : 1. 常用的约束技术 : DTD Scheme2. DTD document type definition文档类型定义 DTD文档在本地 :DTD文档在公共网络 :3.+ 至少一次* 可有可无 多次也行? 可有可无 最多只有一次xml的解析方式有两种 :DOM : document object model 读取整个xml文档 ,按照嵌套关系构建成一颗dom树。增加删除修改查询,唯一不足的地方是

4、 慢!如果文件较大,会占用大量内存。ELEMENT ATTRIBUTE TEXT-node节点DOCUMENT : 代表内存中的DOM树 =节点SAX:simlpe api for xml边读取边解析。只适合读,没有写的功能。xml解析开发包 :jaxp dom4j jdomJAXP : Java API For Processing 由以下几个包组成 : org.w3c.dom:提供DOM方式解析XML的标准接口 org.xml.sax:提供SAX方式解析XML的标准接口 javax.xml:提供了解析XML文档的类javax.xml.parsers包中,定义了几个工厂类。我们可以通过调用这

5、些工厂类,得到对XML文档进行解析的DOM和SAX解析器对象。 DocumentBuilderFactory SAXParserFactoryjavax.xml.parsers 包中的DocumentBuilderFactory用于创建DOM模式的解析器对象 , DocumentBuilderFactory是一个抽象工厂类,它不能直接实例化,但该类提供了一个newInstance方法 ,这个方法会根据本地平台默认安装的解析器,自动创建一个工厂的对象并返回。2012-3-7SAX方式解析XML文档 :/SAX解析XML文档SAXParser parser = SAXParserFactory.n

6、ewInstance().newSAXParser();/1.建立工厂XMLReader reader = parser.getXMLReader();/得到读取器reader.getContentHandler();/设置事件处理器reader.parse(src/book.xml);/读取xml文档1. document对象可以理解为DOM树。2012-3-8javaweb :静态web资源动态web资源 JSP/Servelet(重点和基础) ASP PHPweb服务器: weblogic BEA 最广泛的web服务器 支持javaeewebsphere IBM 支持javaee规范Jb

7、oss 红帽 免费tomcat sun公司 1. 容器 服务器 2. 实现了什么规范的服务软件。一般就称之为什么容器。常用的端口号 :http web服务默认 80ftp 23 pop3 25smtp 110https 4430-1024 更改自己的端口号,尽量不要更改此范围内。tomcat不能正常启动的原因: 1、端口被占用了。解决:找到对应的进程,干掉2、启动时,屏幕一闪而过。解决:可能用的是解压版。请配置环境变量JAVA_HOME,并执行JDK的安装netstatt a 找多对应的进程,禁止。CATALINE_home(tomcat的安装目录)环境变量不建议配置,目录结构:bin 开启

8、关闭tomcat脚本conf 配置文件lib 存放支撑jar包logs 运行日记temp 临时文件存储webapps 供外界访问的web应用work web工作目录标准的javaweb应用目录结构 : WEB-INF 该目录必须有,且大小写必须一致(存放在该目录中的资源,外界无法直接访问)开放式访问 : 直接访问压缩访问 : 部署方便tomcat组成结构 : 七、配置虚拟目录1、概念:虚拟目录其实就是一个web应用。它与Tomcat的server。xml中的元素对应2、path :URL访问入口docBase:指示你的应用的路径3、配置方式:a、更改server.xml配置文件,在 元素中增加

9、来配置虚拟目录。不建议大家使用。需要重新启动服务器才能生效。b、建议的方式:在Tomcat安装目录conf/enginename/hostname目录下建立一个xml文件,该文件的主文件名就是URL访问入口。示例如下:建立一个HelloApp.xml的文件,其中放入一下内容:此种配置方式,不需要重新启动服务器即会生效配置应用的默认首页修改应用的web.xml文件,在根元素下增加以下内容 index.html index.htm index.jsp配置服务器的默认应用在Tomcat安装目录conf/enginename/hostname目录下建立一个名字为ROOT.xml的配置文件,其中增加以下

10、内容:访问mysite应用的默认主页路径为:http:/localhost:8080SSL(SERVER SOCKET LAYER) 是一种保证两个节点进行安全通信的协议,建立在SSL协议上的HTTP被称为HTTPS协议。HTTPS默认端口 :私钥加密的数据只能用公钥解密,公钥加密的只能用私钥解密,非对称加密技术。证书在世界范围内是唯一的。使用的keytool工具建立证书 :keytool -genkey -alias tomcat -keyalg RSA -keystore d:.keystore配置SSL连接器在Tomcat的servlet.xml文件中,已经提供了现成的配置SSL连接器的

11、代码,只要把注释去掉即可在配置tomcat的SSL双向握手中,由于6.0.33版本中默认启用了APR(APR是通过JNI访问的可移植库,可以提高Tomcat的性能和伸缩性),所以采用传统的配置方式(如下)会报异常,解决办法如下 : HTTP 属于应用层 HTTP/1.0也称之无状态 失忆HTTP/1.1 特点:1.在一个TCP连接上可以传送多个HTTP请求和响应。2.多个响应和请求过程可以重叠3.增加了更多的请求头和响应头,比如:Host if-Unmodified-Since请求头1、请求信息GET /mysite/a.html HTTP/1.1 第一行为请求行Accept: image/g

12、if, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application,(此处为一个空格) application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*Accept-Encoding: gzip, defl

13、ateAccept-Language: zh-cn,en-us;q=0.5If-Modified-Since: Thu, 08 Mar 2012 08:13:05 GMTIf-None-Match: W/55-1331194385031User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)Host: localhost:8080Connection: Keep-AliveWarning:a

14、aWarning: bbbWarning: cc此处有个空行从第2行开始到第一个空行前结束,此部分内容属于请求头正文内容 从第一个空行往后,都属于正文部分另 消息头字段名是不区分大小写的,但习惯每一个单词的第一个字母大写。各行消息头没有顺序。消息头又可以分为:通用信息头,请求头,响应头,实体头等。请求头内容 :Accept:浏览器可接受的MIME类型(Tomcat安装目录/conf/web.xml中查找)b、Accept-Charset:告知服务器,客户端支持哪种字符集c、Accept-Encoding:浏览器能够进行解码的数据编码方式d、Accept-Language:浏览器支持的语言。e、

15、Referer:当前页面由哪个页面访问过来的。f、Content-Type:内容类型g、Content-Length:请求正文的长度总结:一个完整的HTTP请求包含三部分:请求行、请求头、正文2、响应信息HTTP/1.1 200 OK 响应行Server: Apache-Coyote/1.1Accept-Ranges: bytesETag: W/55-1331194385031Last-Modified: Thu, 08 Mar 2012 08:13:05 GMTContent-Type: text/htmlContent-Length: 55Date: Thu, 08 Mar 2012 08

16、:22:54 GMT 从第2行开始到第一个空行,这些属于响应头此处有个空行aaaa 响应正文bbba、Location:制定转发的地址。需与302/307响应码一同使用b、Server:告知客户端服务器使用的容器类型c、Content-Encoding:告知客户端服务器发送的数据所采用的压缩格式d、Content-Length:告知客户端正文的长度e、Content-Type:告知客户端正文的MIME类型Conent-Type:text/html;charset=UTF-8f、Refresh:定期刷新。还可以刷新到其他资源Refresh:3;URL=otherurl3妙后刷新到otherurl

17、这个页面g、Content-Disposition:指示客户端以下载的方式保存文件。Content-Disposition:attachment;filename=2.jpgh、Expires:-1 Cache-Control:no-cache Pragma:no-cache控制客户端不要缓存总结:一个完整的HTTP请求包含三部分:响应行、响应头、正文3、请求方式:GET和POSTGET:直接输入地址回车;点击超级链接POST:通过表单的method=post属性来更改c.html4、GET和POST的请求方式的数据传递GET:在请求地址后面直接跟?请求内容。多个请求内容用 &分分隔。例如:G

18、ET /mail/a.html?name=abc&password=xyz HTTP/1.1但是URL地址后附带的参数是有限的,其数据容量通常不超过1K. 不建议使用:不安全;长度有限制POST:适合传输大量数据,因为请求的数据出现在正文部分。比较安全状态码 : l 200(正常)表示一切正常,返回的是正常请求结果l 302/307(临时重定向)指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。l 304(未修改)表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器求。l 404(找不到)服务器上不存在客户机所请求的资源。l 500(服务器内部错

19、误)服务器端的程序发生错误2012-3-10将数据压缩gzip再发送给客户端,减少带宽。提升用户体验。设置无缓存response.SetHeader(“Expires”,”-1”);/设置为负数response.SetHeader(“Cache-Control”,”no-cache”);/针对1.1response.SetHeader(“param”,”no-cache”);/针对1.0一、常用响应头Location: http:/www.it315.org/index.jsp指示新的资源的位置Server:apache tomcat指示服务器的类型Content-Encoding: gzip

20、服务器发送的数据采用的编码类型Content-Length: 80 告诉浏览器正文的长度Content-Language: zh-cn服务发送的文本的语言Content-Type: text/html; charset=GB2312服务器发送的内容的MIME类型Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT文件的最后修改时间Refresh: 1;url=http:/www.it315.org指示客户端刷新频率。单位是秒Content-Disposition: attachment; filename=aaa.zip指示客户端下载文件Set-Cookie

21、:SS=Q0=5Lb_nQ; path=/search服务器端发送的CookieExpires: -1Cache-Control: no-cache (1.1) Pragma: no-cache (1.0)Connection: close/Keep-Alive Date: Tue, 11 Jul 2000 18:23:51 GMT二、Servlet入门任务:向客户端输出Hello Servlet1、建立JavaWeb应用目录helloWEB-INFclasses(Servlet写在此处)libweb.xml2、在classes目录下,建立一个HelloServlet.javapackage

22、com.itheima;import javax.servlet.*;import java.io.*;public class HelloServlet implements Servletpublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOExceptionString data = Hello Servlet;OutputStream out = res.getOutputStream();out.write(data.getBytes();out.close();

23、public void init(ServletConfig config) throws ServletExceptionpublic void destroy()public String getServletInfo()return null;public ServletConfig getServletConfig()return null;3、编译HelloServlet.java进入classes目录3.1set classpath=%classpath%;C:apache-tomcat-6.0.32libservlet-api.jar3.2javac -d . HelloServ

24、let.java4、编辑web.xml,配置Servlet的映射web-app version=2.5 xmlns= xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance xsi:schemaLocation= HelloServlet com.itheima.HelloServlet HelloServlet /HelloServlet 5、将hello应用部署到Tomcat中6、启动Tomcat7、访问:http:/localhost:8080/hello/HelloServlet三、Servlet-api的包javax.servlet:存放

25、Servlet通用的类。与具体通信协议无关javax.servlet.http:存放与HTTP协议有关的Servlet相关类四、映射Servlet1、使用通配符*两种格式:*.扩展名/action/*:注意前面有斜线2、缺省Servlet如果用户请求的URL路径,在当前web应用的web.xml中找不到匹配的url-pattern,则由缺省Servlet来处理。缺省Servlet的url-pattern为/。在Tomcat/conf/web.xml已经配置了一个缺省Servlet。当访问Tomcat服务器中的某个静态HTML文件和图片时,实际上是在访问这个缺省Servlet五、Servlet的

26、生命周期1、Servlet对象是在用户第一次访问时创建的。创建对象后,会立刻执行init初始化方法,只执行一次。2、针对每次用户请求,执行service方法。3、destroy:销毁servlet4、可以通过配置web.xml,在服务器启动时就创建Servlet的对象 ServletDemo3 com.itheima.servlet.ServletDemo3 1 1:取值要为一个正整数六、线程安全1、尽量把变量定义为局部变量七、修改MyEclipse生成的Servlet的模板8.5:搜索com.genuitec.eclipse.wizards_8.5.0.me201003052220.jar八

27、、ServletContext对象1、由容器在web启动时创建,一个web应用只有一个2、ServletContext对象又称为一个域对象(Map容器).九、读取资源配置文件1、利用ServletContext的getRealPath(String path)来读取配置文件参数path:必须以/开头,代表应用的访问入口。读取应用中任何资源,只要找到相对路径即可。2、资源配置文件在classes目录中(类路径下的)2.1用类加载器来读取2.2用ResourceBundle读取2012-3-11一、Servlet输出中文乱码问题1、记住一句话:程序以什么编码输出,就需要告知客户端以什么编码读取2、

28、以字节流向客户端输出中文response.getOutputStream(中国.getBytes();2.1若以字节流输出时,没有指定编码,则默认查GBK码表;由于IE也是默认GBK的,所以不会有乱码问题。2.2response.getOutputStream(中国.getBytes(UTF-8);程序是指定以UTF-8编码输出;IE默认编码是GBK,所以此时会有乱码问题。解决办法:告诉客户端,服务器发送的数据是UTF-8编码的2.2.1response.setHeader(Content-Type,text/html;charset=UTF-8); /设置头2.2.2response.get

29、OutputStream().write();2.2.3response.setContentType(text/html;charset=UTF-8); /一般用这个 3、以字符流向客户端输出中文PrintWriter out = response.getWriter();字符流默认以ISO-8859-1的编码方式发送数据,如果客户端是GBK编码则会出现乱码问题response.setCharacterEncoding(UTF-8);还要通知客户端以什么编码解码response.setContentType(text/html;charset=UTF-8);相当于以上两步二、Response

30、的细节1、Response的字节流和字符流互相排斥,开发中要么用字节流输出,要么用字符流输出2、如果输出的内容是非字符数据,只能用字节流3、如果要用字符流输出字符数据,请先设置编码response.setContentType(text/html;charset=UTF-8);4、Servlet容器在调用完service方法后,会自动检查流有没有关闭,若没有关闭,容器会自动关闭流三、请求参数的中文编码问题1、POST请求方式:浏览器当前是什么编码就以什么编码传递数据。假设浏览器当前编码是UTF-8,可以在代码中request.setCharacterEncoding(UTF-8);解决乱码问题

31、。只对POST请求方式有效2、GET请求方式:手工编码byte b = name.getByte(ISO-8859-1):编码(字符-字节)new String(b,UTF-8);解码(字节-字符) 2.1可以更改Tomcat的server.xml的元素,增加URIEncoding=UTF-8属性,可以解决get请求方式的编码问题。(不建议使用)四、ServletContext他的方法如果需要一个路径的话,必须以/,即绝对路径五、forward请求转发:1、转发前会清空response对象的缓存2、如果在转发前刷新了response对象的缓存,那么就不会转发了,并且会抛出异常getParamt

32、er();客户端的请求参数getAttribute();域对象(Map容器中的对象)六、转发:只能转发到本应用的一个资源上重定向:可以重定向到任意一个资源上。如果重定向的地址以http开头,表示一个完整的路径。七、开发中各种路径的写法(不含完整的URL路径-http)何时路径中需要加上应用名看地址给服务器用的还是给客户端用的。给服务器用的,那么/表示应用名称给客户端用的,那么就必须加上应用的名称/day05/index.jspServletContext.getRealPath(String path): /index.jsprequest.getRequestDispatcher(Strin

33、g path): /index.jspresponse.sendRedirect(String path): /day05/index.jsp: /day05/index.jsp /day05/index.jsp /day05/index.jsp/想ServletContext域中存放一个对象public class Test6 extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException Se

34、rvletContext sc = getServletContext();sc.setAttribute(zz, cc);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doGet(request, response);/取出public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletExceptio

35、n, IOException ServletContext sc = getServletContext();System.out.println(sc.getAttribute(zz);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doGet(request, response);-下载图片文件-public void doGet(HttpServletRequest request, HttpServletRes

36、ponse response)throws ServletException, IOException String realpath = getServletContext().getRealPath(/WEB-INF/images/我.bmp);/得到文件的路径InputStream in = new FileInputStream(realpath);response.setHeader(encoding, GBK);response.setHeader(Content-Disposition,attachment;filename=+URLEncoder.encode(我.bmp, U

37、TF-8);OutputStream out = response.getOutputStream();byte b = new byte1024;int len = -1 ;while(len = in.read()!=-1)out.write(b, 0, len);in.close();out.close();response.setHeader(Content-Type, texl/html;charset=UTF-8);/设置响应头 ,告知客户以UTF-8解码response.setContentType(text/html;charset=UTF-8); /响应正文编码为UTF-8

38、并 告知客户编码表为UTF-8 。response.setCharacterEncoding(GBK); /对正文内容进行指定编码System.out.println(request.getRequestURL();/http:/localhost:8080/Mytest/servlet/Test12System.out.println(request.getRequestURI();/Mytest/servlet/Test12System.out.println(request.getQueryString();/ ?后面请求的参数System.out.println(request.get

39、RemoteAddr();/获取客户端IPSystem.out.println(request.getRemoteHost();/获取客户端hostSystem.out.println(request.getRemotePort();/获取客户端portSystem.out.println(request.getRemoteUser();/获取客户端userSystem.out.println(request.getMethod();/method-GETresponse.setContentType(text/html;charset=UTF-8);PrintWriter out = response.getWriter();String header = request.getHeader(Accept-Encoding);System.out.println(header);/gzip, deflate-遍历客户机请求头信息-response.setConten

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号