JavaWeb总结.docx
- 文档编号:6462602
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:49
- 大小:103.62KB
JavaWeb总结.docx
《JavaWeb总结.docx》由会员分享,可在线阅读,更多相关《JavaWeb总结.docx(49页珍藏版)》请在冰豆网上搜索。
JavaWeb总结
JavaWeb总结
JSP部分:
第一
1JSP和Java的关系
一般Java指:
标注版JavaSE;JavaEE和JavaME; JSP属于JavaEE的一部分。
JavaEE:
组件:
Web层组件(JSP+Servlet)+业务层组件(EJB)
服务:
JNDIJDBCRMIJAASJavaMail等等
JavaEE包括2个体系:
标准(上面介绍的)+流行(Struts+Hibernate+Spring)
两套体系都是JSP+Servlet为基础。
2JSP会涉及哪些内容
JSP语法基础(Java+HTML):
对于Java,需要掌握Java的基本语法:
类定义对象定义和使用常用类库java.lang.*,java.util.*;
对于HTML,主要表单元素(输入)+表格(显示信息)+基本HTML
JSTL,标准标签库,用于输出和控制EL,通常与JSTL一起使用,主要用于输出Servlet,几乎所有介绍JSP的书和课程都包含Servlet,因为JSP实际上指的是JavaWeb开发。
用Servlet主要是控制器。
JDBC,对数据库的访问。
JavaBean(Java类)
3JSP的运行环境
JDK服务器:
我们用Tomcat。
其它的服务器:
IBMWebsphere+BEAWebLogic +JBoss(免费的)+GlassFish(新出的JavaEE5服务器)
4JSP的开发环境
页面:
DreamWeaver开发页面
代码:
本文编辑器EclipseNetBeansJBuilder等等其他
5Tomcat文件夹
webapps 主要各个应用,编写的每个应用(网站)都可以放在这个位置
bin 这个是启动服务器的相关文件,tomcat6用于命令行方式的启动,tomcat6w用于windows方式的启动
conf 用于配置,常用的是server.xml另外一个是web.xml
work存放临时文件
logs 系统运行时候的日志信息
6实例:
hello.jsp
创建一个应用,实际上需要在webapps中创建文件夹,bookstore,相当于应用的名字
文件夹中要创建一个子文件夹WEB-INF,这个每个应用web应用都需要的。
在WEB-INF中需要web.xml,是web应用的配置文件,还应该有classes和lib子文件夹(存放类文件)
JSP文件和HTML文件直接放在bookstore下面。
hello.jsp文件内容如下:
<%@pagecontentType="text/html;charset=utf-8"%>
--上面的代码声明文档类型和编码方式,每个JSP文件基本上都会有-->
先启动服务器:
访问程序:
http:
//127.0.0.1:
8080/bookstore/hello.jsp
http表示协议
127.0.0.1表示主机IP地址,也可以写主机名字
8080表示服务的端口,上网的时候不用输入端口,因为采用了默认的端口,默认端口80。
bookstore表示应用,是应用的名字(WebContext-root)
hello.jsp就是资源
7JSP的运行原理
首先启动服务器,并且要保证应用在服务器上(把应用放在webapps下面,会自动加载)在客户端通过浏览器发送请求(在地址栏中输入地址),服务器接收到请求之后,查找有没有这个文件对应的Java文件的对象。
如果没有这个对象,需要创建(先把JSP文件转换成Java文件,编译成.class文件,加载类并创建对象),然后调用对象的相应方法,方法完成对用户的响应,通常是输出的html代码)客户端接收到的是html代码,浏览器解析这个代码生成页面。
8.下面是JSP和其他类似或相关技术的一个简单比较:
1).JSP和ActiveServerPages(ASP)相比
Microsoft的ASP是一种和JSP类似的技术。
JSP和ASP相比具有两方面的优点。
首先,动态部分用Java编写,而不是VBScript或其他Microsoft语言,不仅功能更强大而且更易于使用。
第二,JSP应用可以移植到其他操作系统和非Microsoft的Web服务器上。
2).JSP和纯Servlet相比
JSP并没有增加任何本质上不能用Servlet实现的功能。
但是,在JSP中编写静态HTML更加方便,不必再用println语句来输出每一行HTML代码。
更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:
比如,由页面设计专家进行HTML设计,同时留出供Servlet程序员插入动态内容的空间。
3).JSP和服务器端包含(Server-SideInclude,SSI)相比
SSI是一种受到广泛支持的在静态HTML中引入外部代码的技术。
JSP在这方面的支持更为完善,因为它可以用Servlet而不是独立的程序来生成动态内容。
另外,SSI实际上只用于简单的包含,而不是面向那些能够处理表单数据、访问数据库的“真正的”程序。
4).JSP和JavaScript相比
JavaScript能够在客户端动态地生成HTML。
虽然JavaScript很有用,但它只能处理以客户端环境为基础的动态信息。
除了Cookie之外,HTTP状态和表单提交数据对JavaScript来说都是不可用的。
另外,由于是在客户端运行,JavaScript不能访问服务器端资源,比如数据库、目录信息等等。
第二
1.常用的表单元素
单行文本框:
用于输入少量的信息。
基本语法格式:
type="text"就说明这是单行文本框;
name指出文本框的名字,最好不要用汉字,最好使用有意义的名字;
value指出默认值,如果没有默认值,可以不要value属性,value属性经常在修改的时候使用。
密码框:
用于输入密码。
基本的语法格式:
注意:
设置密码的时候,应该使用确认密码,应该有两个密码框。
提交按钮:
当点击它的时候,会把输入的信息提交给服务器。
基本语法格式:
type应该为submit,value是显示在按钮上面的信息。
复位按钮:
当点击它的时候,会把各个表单元素的值恢复到默认值。
基本语法格式:
普通按钮:
也可以完成提交,还可以完成方法的调用。
基本语法格式:
单选按钮:
通用用于在多个选项中选择一个。
基本语法格式:
这个表示一个单选按钮,并且仅仅是一个按钮。
例,选择性别:
如果希望在多个选项中选择一个(有互斥性),必须让他们的名字一致。
复选框:
用于多选。
基本的语法格式:
显示给用户的信息与提交给服务器的信息没有关系。
如果希望多个选项是一组,应该使用相同的名字。
下拉列表:
用于选择,可以单选,也可以多选。
基本语法格式:
每个选项使用一个option,使用value属性指出该选项的值,在之间是显示给用户的值。
文本域:
用于输入大量的信息。
基本语法格式:
要为这个文本域赋默认值,需要把值放在开始标志和结束标志之间,而不是使用value属性。
2.完成输入的时候应该注意的问题
对格式的要求必须明确,包括长度、数字、日期、email、电话、必添。
能够从系统中获取的信息不要让用户提供,例如当前时间。
能够选择的信息不要让用户输入。
按照信息的重要程度安排表单元素在界面中的位置。
3、对用户输入信息进行验证:
要用JavaScript
第三
1、include指令
作用:
把多个文件中需要共享的代码放在单独的文件中,然后在需要的时候使用该指令引入这个文件。
典型的应用,把网站的头部和版权信息放在单独的文件中,在其他文件中包含这两部分。
基本的语法格式:
<%@includefile="目标文件"%>
file属性指出目标文件。
运行过程:
在转换的时候,当遇到include指令的时候会把include指令指向的目标文件的内容拷贝到当前位置,替换include指令,这样最后形成一个文件。
然后才编译形成class文件,然后运行。
2、 forward>标签 我们使用登录功能的模拟来介绍。 首先,使用Java代码完成判断,使用 forward>完成跳转,代码: <%@pagecontentType="text/html;charset=gb2312"%> <% //先获取用户输入的用户名和口令,然后判断是否合法 Stringusername=request.getParameter("username"); Stringuserpass=request.getParameter("userpass"); if(username.equals("zhangsan")&&userpass.equals("zhangsan")) { %> forwardpage="success.jsp"/> <% }else{ %> forwardpage="index.jsp"/> <% } %> 注意: 不管跳转到success.jsp还是index.jsp,地址栏都是处理文件的名字。 forward>的语法格式: forwardpage="目标文件"/> page属性指出转向的目标文件。 最后的结束符为“/>”,斜杠不能省略。 另外一个可以完成跳转的方式是采用response.sendRedirect()。 response和request一样,都是内容对象,可以直接访问。 修改上面的文件: <%@pagecontentType="text/html;charset=gb2312"%> <% //先获取用户输入的用户名和口令,然后判断是否合法 Stringusername=request.getParameter("username"); Stringuserpass=request.getParameter("userpass"); if(username.equals("zhangsan")&&userpass.equals("zhangsan")) { response.sendRedirect("success.jsp"); }else{ response.sendRedirect("index.jsp"); } %> forward>和response.sendRedirect的运行效果相同(针对上面的这个例子)。 相同点: 都是转向目标文件。 不同点: 地址栏中显示的内容是不相同的,如果使用 forward>,地址栏显示当前文件的名字,如果使用response,地址栏显示的是转向后的文件的名字。 执行过程不同: 使用 forward>相当于一次请求,使用response相当于两次请求。 使用 forward>的情况: index.jsp中输入用户名和口令,提交给login_process.jsp,服务器保存用户的输入信息,使用 forward>转向success.jsp之后,success.jsp还可以访问用户输入的信息,因为输入同一次请求。 使用response的请求: index.jsp中输入用户名和口令,提交给login_process.jsp,服务器保存用户的输入信息,使用response的sendRedirect方法相当于重新向服务器发送一次请求,这样上次的请求内容(用户名和口令)就不能共享了。 3、 include>标签 把index.jsp中<%@include="header.jsp"%>替换成 includepage="header.jsp"/> 从运行效果上相同。 不同点: 1、两个文件,目标文件是单独运行的,当前文件运行到 include>标签的时候,转向执行标签所指向的目标文件,执行之后返回继续标签之后的内容。 2、<%@include%>指令是在编译(转换)的时候使用, include>在运行的时候起作用。 程序中如何选用: 要导入的内容是不是每次都执行,如果每次都执行的话,应该使用<%@include%>,如果是在特定的条件下,应该使用 include>。 例如,登录之后要么转向success.jsp要么转向index.jsp,如果在程序中使用导入,应该用 include>。 4、 include>和 forward>区别 把login_process.jsp中的 forward>替换成 include>: <%@pagecontentType="text/html;charset=gb2312"%> <%//先获取用户输入的用户名和口令,然后判断是否合法 Stringusername=request.getParameter("username"); Stringuserpass=request.getParameter("userpass"); if(username.equals("zhangsan")&&userpass.equals("zhangsan")) { %> includepage="success.jsp"/> <% }else{ %> includepage="index.jsp"/> <% } %> 运行效果是相同的。 但是有不同点,修改代码如下: <%@pagecontentType="text/html;charset=gb2312"%> 处理文件的前半部分 <% //先获取用户输入的用户名和口令,然后判断是否合法 Stringusername=request.getParameter("username"); Stringuserpass=request.getParameter("userpass"); if(username.equals("zhangsan")&&userpass.equals("zhangsan")) { %> includepage="success.jsp"/> <% }else{ %> includepage="index.jsp"/> <% } %> 两次运行结果不相同。 分析原因: forward>: 先执行标签之前的内容,遇到标签的时候转向执行目标文件,执行完不返回,显示的内容为目标文件的内容,标签之前的内容执行,但是不显示。 标签之后的内容不会执行,当然更不会显示。 include>: 先执行标签之前的内容,遇到标签转向执行目标文件,执行完返回,继续执行标签之后的内容,显示的内容为: 标签之前的内容+目标文件的内容+标签之后的内容,标签的前后都执行,都显示。 5、使用标准标签库(JSTL)完成登录的判断过程 如何使用标签标签库: (1)得到标签库的实现文件,jstl.jar和standard.jar,放在WEB-INF下面的lib子文件夹。 (2)在JSP文件中要声明标签库,通过tablib指令进行声明: <%@taglibprefix="c"uri="(3)使用标签: iftest=""> if> 要完成判断,可以使用标签标签库中的c: if标签。 标签的基本格式: if test="">条件成功要执行的内容 if> test表示测试条件,测试条件可以写常量,可以是表达式语言(EL,主要用于输出),主要使用表达式语言。 例如: 要判断用户提交的用户名和口令是否是zhangsan。 iftest="${param.username==\"zhangsan\"&¶m.userpass==\"zhangsan\"}"> forwardpage="success.jsp"/> if> 注意: 添加完标准标签库之后,需要重新启动服务器。 1.JSP标签库(也称自定义库)可看成是一套产生基于XML脚本的方法,它经由JavaBeans来支持。 在概念上说,标签库是非常简单和可以重用的代码构造。 它可以大大简化你在页面中输入各种录入框的代码(诸如此类的代码: <inputtype="text"name="taxpayerName"value=",<selectname="collectionItemCode"class="required"style="width: 200"..,并使之结构化。 2.标签库(Taglibraries)提供了建立可重用代码块的简单方式。 但是和COM和J2EE不同的是,你不需要掌握任何额外的技能就可以建立标签库: 如果你会编写JSP页面,你就会建立标签库。 最后,标签库还改进了Web应用程序的维护性。 这种对维护性的改进表现在: 轻易地在JSP页面上就实现了基于XML的可定制接口。 3.一个简单的标签由下面的元素构成: ⑴JavaBeans: 为了得到Java与生具来的面向对象的好处,可重用的代码应该放到一个独立的代码容器中。 这些JavaBeans并不是标签库的一部分。 不过它是你的代码库用来执行相关任务的基本代码块。 ⑵标签处理: 这是标签库的真正核心。 一个标签处理器将引用它需要的任何资源(你的JavaBeans)和访问你的JSP页面的全部信息(pageContext对象)。 JSP页面也会将所有已经被设置的标签属性和JSP页面上的标签体中的内容传送给标签处理器。 在标签处理器处理完毕后,它将发回输出到你的JSP页面进行处理。 ⑶标签库的描述(tld文件): 这是一个简单的XML文件,它记录着标签处理器的属性、信息和位置。 JSP容器通过这个文件来得知从哪里及如何调用一个标签库。 ⑷网站的web.xml文件: 这是你网站的初始化文件,在这个文件中,你定义了网站中用到的自定义标签,以及哪个tld文件用来描述每个自定义的标签。 ⑸分发文件(一个WAR或者JAR文件): 如果你想重用自定义标签的话,你需要一个方法来将它由一个项目转移到另一个项目中。 将标签库打包为一个JAR文件是一个简单而且有效的方式。 ⑹在你的JSP文件中作标签库声明: 很简单,如果要用到该标签的话,只要在页面声明一下就可以,其后,你就可以在该JSP页面的任何地方使用它。 下面是一个实例 1.先编写标签处理程序,ATMTag.java //用标签处理程序来定义客户标签的工作 importjavax.servlet.jsp.*; //导入标签类的驱动 importjavax.servlet.jsp.tagext.*; importjava.io.*; importjava.sql.*; importjava.math.*; importjava.util.*; //实现TagSupport或BodyTagSupport接口 publicclassATMTagextendsTagSupport { Connectionconnect=null; Statementstate=null; ResultSetresult=null; publicATMTag()throwsClassNotFoundException { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } //抽象类Tag的方法,标签处理程序的初始化 publicintdoStartTag()throwsJspTagException { //指导JSP引擎处理标签的体内容 returnEVAL_BODY_INCLUDE; } //执行标签任务 publicintdoEndTag()throwsJspTagException { try{ //把输出写到JSP页面 JspWriterout=pageContext.getOut(); connect=DriverManager.getConnection("jdbc: odbc: test","sa",""); StringstrQuery="SelectcCounter_id,cAddress,mCashBalancefromCounterwhere
处理文件的后半部分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaWeb 总结