已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
day012013年8月30日10:091.web开发的背景知识1)三层的client/servera.基本结构:数据库:负责数据的存储与检索应用服务器:处理所有的业务逻辑客户端:提供操作的界面,并且显示处理的结果。b.优缺点优点:移植性好,比如换数据库,因为业务逻辑都写在应用服务器上,所以影响不大。换应用服务器所在的平台(不管是换操作系统还是硬件,只要有JVM,应用服务器都能运行。)缺点:客户端需要单独安装和维护。另外,开发相对复杂,因为需要自定义协议,并且开发相应的通信层。2)brower/servera.基本结构数据库:负责数据的存储与检索。web服务器:处理所有的业务逻辑浏览器:提供操作界面,并且显示处理的结果。b.优点:客户端不再需要单独的安装了,开发相对简单一些,因为不再需要开发自定义协议,通信层已经开发好了(浏览器,web服务器,都提供了响应的通信层)。2.servlet是什么?sun公司制订的一种用来扩展web服务器功能的组件规范。1)用来扩展web服务器功能早期的web服务器(比如,apache提供的web server)不能够处理动态资源(就是说,要依据请求参数进行计算生成页面)的请求。要让web服务器能够处理动态资源的请求,就必须扩展其功能。早期,使用的是cgi程序来扩展。cgi是一个规范,可以使用c,pral等语言开发。但是cgi开发相对复杂,而且可移植性不好,性能也比较差。2)组件规范a.什么是组件?符合某个规范,实现部分功能的并且可以部署到响应的容器里面运行的软件模块。servlet就是一个组件,必须部署到servlet容器里才能运行。b.什么是容器?符合某个规范,为组件提供一些基础服务的程序。比如,servlet容器会为servlet提供网络相关的基础服务,开发人员在使用servlet时不需要编写网络的相关代码。3.如何开发一个servlet?step1.写一个java类,实现servlet接口或者继承HttpServlet抽象类。step2.编译step3,打包一个组件就是建一个文件夹appnameWEB-INFclass(字节码文件)lib(可选,jar文件)web.xml(部署描述文件)注意:appname可以自定义名称,其他必须按照以上结构来写。step4:部署就是拷贝:将step3生成的整个文件夹拷贝到servlet容器指定的某个文件夹下面(比如tomcat一般拷贝到webapps文件夹下面)。或者也可以将step3生成的整个文件夹使用的jar命令压缩,生成.war文件,然后再拷贝。step5.启动servlet容器,访问servlethttp:/ip:port/appname/servlet-urlip:servlet容器所在的机器的ip地址servlet-url:web.xml文件当中的配置4.安装tomcat(是一个开源的servlet容器)5.使用myeclipse开发一个servletstep1.先让myeclipse管理tomcatstep.2创建一个web工程6.servlet是如何运行的?比如,在浏览器地址栏输入http:/ip:port/web01/hellostep1.依据ip,port建立与web服务器之间连接(注意:tomcat等servlet容器同时也是一个简单的web服务器)step2.浏览器将需要发送给web服务器的数据打包(按照http协议,即请求数据包),然后发送。step3.web服务器解析清秀数据包(即拆包),将解析之后得到的数据封装到request对象上,同时,还会创建request对象。step4.web服务器依据请求资源路径(web01/hello)找到servlet的配置,然后创建servlet对象。step5.web服务器调用servlet的service方法,在调用该方法是,会将事先建好的request,response对象作为参数传递给service方法。step6.在service方法里,可以通过request对象获得请求参数,并进行相应处理,然后将处理结果写到response对象里。step7.web服务器会从response对象中取出处理结果,打包(即响应数据包),然后发送给浏览器。step8.浏览器拆包(即解析响应数据包)取出数据,生成相应的页面。day022013年9月2日9:521.常见的错误以及解决方式1)404404是一个状态码(是一个三位数字。由w3c定义的,表示web服务器的一种状态,即web服务器在处理客户端的请求时是否正常),404表示依据请求地址,找不到对应的请求资源。a.产生404错误的原因及解决方式:a1.请求地址写错,仔细检查请求地址(http:/ip:port/appname/servlet/url)。a2.web.xml文件中,servlet-name写错。检查servlet-name.2)500a.产生500错误的原因及解决方式a1.程序在运行时发生了异常,仔细检查java源代码a2.web.xml文件当中,servlet-class写错。按照实际包名类名a3.类没有继承HttpServlet.3)405a.产生405错误的原因及解决方式servlet的service方法不正确。2.http协议(超文本传输协议)1)http协议是什么?由w3c制订的一种应用层协议,该协议规定了浏览器和web服务器之间如何通讯以及通讯时所使用的数据格式。a.如何通讯step1.浏览器建立与web服务器之间的连接step2.浏览器将请求数据打包,发送请求数据包给web服务器。step3.web服务器处理结果打包,发送响应数据包给浏览器。step4.web服务器关闭连接。b.特点:一次请求,一次连接。c.优点:效率高,即web服务器可以利用有限的连接为尽可能多的客户端(浏览器)服务。2)请求数据包和响应数据包1)请求数据包a.请求行:请求方式 请求资源路径 协议类型和版本b.若干消息头:消息头是一些key-value键值对,一般由w3c来订制,浏览器与web服务器之间可以通过发送一些消息头来传递特定的信息,比如,浏览器可以通过user-agent消息头,告诉web服务器浏览器的类型和版本。c.实体内容:只有当发送post请求时,浏览器才会将请求参数添加到这。如果是get请求,浏览器会将请求参数添加到请求资源路径的后面。2)响应数据包a.状态行:协议类型和版本 状态码 状态码的描述。状态码是一个三位数字,由w3c定义,有web服务器发送给浏览器,告诉浏览器web服务器是否正确地处理了请求。200:正确404:依据请求地址找不到对应的资源500:程序运行出错b.若干消息头web服务器也可以发送一些消息头给浏览器,比如content-type,告诉浏览器,服务器返回的数据类型。c.实体内容程序处理的结果。3.get请求与post请求1)哪一些情况下,浏览器会发送get请求?a.浏览器地址栏直接输入某个地址b.点击链接c.表单默认提交的方式2)哪一些情况下,浏览器会发送post请求?a.设置表单的method属性等于post.3)get请求的特点:a.会将请求参数添加到请求资源路径的后面。因为请求行能够添加的数据很少,所以get方式只适合提交少量的数据。b.get方式会将请求参数显示在浏览器地址栏,不安全(路由器会记录url)。4)post请求的特点:a.会将请求参数添加到实体内容里面。能够提交的数据很多。b.post方式不会将请求参数显示在浏览器地址栏,相对安全一些。如果有敏感数据需要提交给服务器,一般使用https协议(该协议会对请求参数加密)。4.如何获得请求参数值?1)String request.getParameter(String paraname);注意:a.paraname不能写错,否则会获得nulllb.如果参数没有复制,会获得url2)String request.getParameterValues(String paramname);注意:(1)有多个参数名相同的时候,用这个方法。比如:hello?city=bj&city=sh&city=wh5.如何处理表单中的中文参数值?1)乱码问题产生的原因a.表单提交时,浏览器会对表单中的参数值按照打开该表单所在的页面的编码格式来编码。比如:表单所在的页面打开时按照utf-8编码格式打开,则表单提交时,对表单中的参数值按照utf-8去编码。b.web服务器在默认情况下,会使用iso-8859-1去解码。因为编码和解码使用的编码格式不一样,所以会产生乱码。2)编码的基础知识a.java语言在内存当中保存的所有的字符都会使用unicode这种编码格式来保存。b.编码:将unicode编码格式对应的字节数组转换成某种本地编码格式(gbk,utf-8)对应的字节数组。c.解码:将某种本地编码格式保存的字节数组转换成unicode编码格式对应的字节数组。3)如何解决乱码问题a.方式一:setp1.保证表单所在的页面按照制定的编码格式打开。比如:对于html文件,添加step2.让web服务器使用制定的编码格式去解码。request.setCharacterEncoding(utf-8);b.方式二:step1.同上step2.String str2 = new String(str1.getBytes(iso-8859-1),utf-8);4)servlet如何输出中文?response.setContentType(text/html;charset=utf-8);该方法的作用:1)返回一个消息头content-type,告诉浏览器,返回的数据类型和编码格式2)通过response获得的流(out)会使用制定的编码格式对数据进行编码day032013年9月3日9:561.servlet访问数据库1)编程步骤step1.将JDBC的驱动(.jar文件)拷贝到WEB-INFlib下Tomcat提供了自己的classloader,会查找WEB-INFlib下的文件。step2.注意异常的处理2.重定向1)什么是重定向?服务器通知浏览器立即向一个新地址发请求。即服务器可以发送一个302状态码和一个Location消息头(值为一个地址,成为重定向地址)。浏览器收到之后,会立即向重定向地址发请求2)编程response.sendRedirecr(String url);url:重定向地址。3)注意两个问题a.重定向之前,不能够调用out.close()b.重定向之前,servlet容器会先清空response对象上缓存的数据4)特点a.重定向的地址是任意的。3.将中文插入到数据库a.数据库要支持中文b.要保证JDBC驱动程序支持中文.JDBC驱动程序在访问数据库时,需要做正确的编码(插入数据)和解码(查询)。有部分JDBC驱动程序不能正确地进行编码和解码。解决方式:方式一.换驱动程序。 方式二,对于mysql数据库,可以jdbc:mysql:localhost:3306:/day042013年9月4日11:081.servlet容器如何处理请求资源路径?比如,在浏览器地址栏输入http:/ip:port/web04_2/abc.html浏览器会将/web04_2/abc.html作为请求资源路径发送给容器。容器首先依据请求资源路径中的应用名(/web04_2)找到应用所在的文件夹。接下来,容器会先假设访问的是一个servlet,看web.xml文件中是否有匹配的servlet:a.精确匹配:要求url-pattern与路径完全一致,比如对于上面的请求,要求/abc.htmlb.通配符匹配:即使用*(0个或者多个)匹配任意的字符。比如:/* /abc/*c.后缀匹配:使用*.开头,后接任意的多个字符。比如:*.do以上会匹配所有以do结尾的请求。2.如何让一个servlet处理多个请求?step1.使用后缀匹配模式,比如:*.dostep2.在servlet的service方法里面,获得请求资源路径,通过分析路径然后调用不同的分支来处理。String url = request.getRequestURI();3.servlet的生命周期1)什么是servlet的生命周期?servlet容器如何创建servlet对象、如何初始化、如何调用servlet对象的方法来处理请求以及如何销毁servlet对象的整个过程。2)声明周期的四个阶段1)实例化a.实例化的含义:容器调用servlet的构造器,创建一个servlet对象。b.什么时候实例化?情况一:容器收到请求之后才创建。情况二:容器启动的时候,事先创建好。load-on-startup参数:要在web.xml文件当中,使用来配置,值是一个大于等于零的整数,越小,优先级越高,即优先被容器创建。c.servlet容器在默认情况下,只会为某个servlet创建一个实例2)初始化a.初始化的含义:容器在创建好servlet对象之后,会立即调用servlet对象init方法。b.init(ServletConfig config)方法:GenericServlet已经实现了该方法,一般情况下,我们不需要再提供该方法的实现。GenericServlet的init方法是这样实现的:将容器传递过来的Config对象保存下来,并且提供了一个getServletConfig()方法。如果GenericServlet的init方法不满足我们的要求,可以override init()方法。i方法只会执行一次d.ServletConfig对象提供了一个方法。String getInitParamenter(String paramane)用户访问servlet的初始化参数。3)就绪a.就绪的含义:容器收到请求之后,会调用servlet对象的service方法处理请求。b.HttpServlet已经实现了service方法,该方法依据请求方式(get/post)分别去调用doGet和doPost方法来处理。我们在编写servlet时,可以override HttpServlet的service方法,或者也可以override HttpServlet的doGet和doPost方法。4)销毁a.销毁的含义:容器依据自身的算法,在销毁servlet对象之前,会调用servlet对象的destroy方法。b.destory方法只会执行一次。c.GenericServlet已经实现了destroy方法。3)servlet声明周期相关的几个类与接口。(1)Servlet接口a. init(ServletConfig config):用于初始化b. service(ServletRequest req,ServletResponse res):用于处理请求c. destroy():用于销毁servlet对象(2)GenericServlet抽象类实现了Servlet接口,主要实现了init,destroy方法(3)HttpServlet抽象类继承了GenericServlet 主要实现了service方法。 (4)ServletConfig接口提供了String geiInitParameter(String paramna)用来获取servlet的初始化参数(5)ServletRequest接口是HttpServletRequest的父接口(6)ServletResponse接口是HttpServletReponse的父接口day052013年9月6日0:061.JSP(java server page )java服务器端页面技术1)什么是jsp?sun公司制订的一种服务器端动态页面生成技术规范。JSP其实就是一个以.jsp为后缀的文件,在该文件当中,主要是html(css,javascript)和少量的java代码。容器会将jsp文件转换成一个对应的servlet然后去执行。2)如何写一个JSP文件?step1.创建一个以.jsp为后缀的文件。step2.在该文件里面,可以添加如下的内容:1)html(css,javascript)直接写,不用再写out.println。2)java代码a.java代码片段比如b.jsp表达式比如3)指令a.什么是指令?告诉容器,在将JSP文件转换成servlet类时做一些额外的处理,比如导包。b.语法c.page指令c1.import属性:导包。比如: c2.contentType属性:设置response.setContentType内容,比如c3.pageEncoding属性:告诉容器JSP文件的编码格式。4)隐含对象a.什么是隐含对象?在JSP文件里面可以直接使用的对象b.为什么可以直接使用这些隐含对象?因为容器会自动添加获得这些对象的代码。c.有哪一些隐含对象?out,request,response3)JSP是如何运行的?step1.容器要将JSP文件转换成一个servlet类。html(css,javascript)-service方法里,用out.writer方法输出。-service方法里,照搬。-service方法里,使用out.print方法输出。2.转发1)什么是转发?一个web组件(servlet/jsp)将未完成的处理交给另外一个web组件继续完成。常见的情况:一个servlet获得需要展现的数据之后,发一个jsp来将这些数据展现出来。2)编程step1.绑定数据到request对象上。request.setAttribute(String name,Object obj);name:绑定名称。obj:绑定值/getAttribute方法:依据绑定名称获得绑定值,如果找不到值,返回null。Object request.getAttribute(String name);step2.获得转发器/url:转发的目的地RequestDispatcher rd = request.getRequestDispatcher(String utl);step3.转发rd.forward(request,response);3)需要注意的两个问题a.转发之前,不能调用out.close()。b.转发之前,容器会将response对象上缓存的数据清空。4)特点a.转发的目的地必须是同一个应用内部某个组件的地址。b.转发之后,浏览器地址栏的地址不变。day062013年9月7日9:471.include指令1)作用:告诉容器在将JSP文件转换成servlet类时,将文件的内容直接插入到指令所在的位置。2)用法:2.让容器来处理异常step1.将异常抛给容器比如: throw new ServletException()step2.在web.xml文件当中,配置错误处理页面,当容器捕获到对应的异常之后,会调用对应的页面来显示。javax.servlet.ServletException/error.jsp一般来说,对于系统异常(不是由于程序的问题,是因为程序在运行过程当中以来的资源出了问题,比如访问不了数据库),可以将异常交给容器来处理。3.路径问题链接地址、表单提交、重定向、转发response.sendRedirect(list.do);request.getRequestDispatcher(emplist.jsp);1)什么是相对路径?不以/开头的路径相对路径是相对于当前组件的路径。2)什么是绝对路径?以/开头的路径3)如何写绝对路径?连接地址、表单提交、重定向这三种情况,从应用名开始写,转发从应用名之后开始写。注意:应用名不要直接写在路径里面,应该使用String request.getContextPath()来获得应用名。4.转发与重定向的区别1)转发所涉及的各个web组件(servlet/jsp)会共享同一个request对象和response对象。而重定向不能共享。因为request对象和response对象的生存事件是一次请求与响应期间(即,当容器收到请求之后,会立即创建这两个对象,只要容器将响应发送出来,就会立即销毁这两个对象)。重定向是两次请求。2)转发的目的地只能是同一个应用内部某个组件的地址,而重定向是任意的地址。3)转发之后浏览器地址栏的地址不变,重定向会变。4)转发是一件事未做完,而重定向是一件事已经做完,然后调用另外一个组件做另外一件事情。5.状态管理1)什么是状态管理?将浏览器与web服务器之间多次交互(一次请求一次响应)当作一个整体来看待,并且将多次交互所涉及的数据(即状态)保存下来。2)如何进行状态管理?第一类是客户端的状态管理技术,即将状态保存在浏览器。第二类是服务器端的状态管理技术,即将状态保存在服务器上。3)cookie1)什么是cookie?a.cookie数据客户端的状态管理技术。b.浏览器在访问服务器时,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器。浏览器会将这些数据保存下来,当浏览器再次访问服务器时,会将之前保存的这些数据以cookie消息头的方式发送给服务器。2)如何创建一个cookie?Cookie c = new Cookie(String name,String value);name:cookie的名称value:cookie的值response.addCookie(c);3)查询cookieCookie request.getCookies();注意:如果浏览器没有发送任何的cookie,则该方法返回null。String cookie.getName();String cookie.getValue();4)生存时间指的是浏览器会将cookie保存多久,保存在哪儿。默认情况下,浏览器会将cookie保存在内存。浏览器只有关闭,cookie就不存在了。cookie.setMaxAge(int seconds);注意:a.单位是秒b.seconds0:浏览器会将cookie保存在硬盘上,超过指定的时间,会被删除。seconds0:缺省值,浏览器会将cookie保存在内存。seconds=0:删除cookie比如,要删除一个名称为uid的cookieCookie c = new Cookie(uid,);c.setMaxAge(0);response.addCookie(c);5)编码问题cookie只能保存合法的ascii字符,如果要保存中文,需要编码(将中文转换成合法的ascii字符)。在保存cookie时,使用UREncoder.encode(String str,String code);在读取cookie时,使用URDecoder.decode(String str,String code);6)路径问题a.什么是路径问题?浏览器在访问服务器上的某个地址时,会比较cookie的路径是否与这个地址匹配,如果匹配,才会将该cookie发送出去。b.匹配规则:要访问的地址必须是cookie的路径或者其子路径,浏览器才会发送该cookieb1.cookie有一个默认的路径,其值等于创建该cookie的组件的路径,比如:/web07/app01/a1.jsp创建了一个cookie,则该cookie的默认路径是/web07/app01b2.可以调用cookie.setPath(String path)来修改cookie的路径。比如:cookie.setPath(/appname);7)cookie的限制a.cookie不安全,对于敏感数据(比如帐号、密码)一定需要加密。b.cookie可以被用户禁止。c.cookie能够保存的数据大小有限制(4k左右)。d.cookie浏览器能够保存的cookie的个数也有限制(300个左右)。e.cookie只能保存字符串。day072013年9月9日10:111.session1)什么是session?a.服务器端的状态管理技术。b.浏览器在访问服务器的时候,服务器会创建一个session对象(有一个唯一的id,一般称之为sessionId),在默认情况下,服务器会使用cookie的方式(以set-cookie消息头的方式)将sessionId发送给浏览器。当浏览器再次访问服务器时,会将sessionId发送给服务器,服务器依据sessionId找到之前创建的session对象。2)如何获得session对象?1)方式一:HttpSession session = request.getSession(boolean flag);a.当flag=true时:先查看请求当中有没有sessionId,如果没有,则创建一个session对象;如果有,则依据sessionId查找对应的session对象,找到了,则返回;找不到,则创建一个新的session对象b.当flag=false时:先查看请求当中有没有sessionId,如果没有,返回null;如果有,则依据sessionId查找对应的session对象,找到了,则返回;找不到,则返回null。2)方式二:HttpSession session = request.getSession();等价于 request.getSession(true);3)session对象常用的方法String getId();setAttribute(String name,Object obj);/如果name对应的值不存在,返回nullObject getAttribute(String name);/解除绑定removeAttribute(String name);4)session的超时1)什么是session的超时?web服务器会将空闲时间过长的session对象删除掉。大部分服务器缺省的超时时间限制是30分钟。2)如何修改session超时方式一:改配置文件a.改整个web服务器的配置文件。比如对于tomcat,可以修改conf/web.xmlb.也可以修改某个具体应用的配置文件方式二:编程session.setMaxInactiveInterval(int seconds);5)删除session对象invalidate();6)如何进行session验证step1.在登录成功以后,在session对象上绑定一些数据。比如:session.setAttribute(user,user);step2.对于需要保护的资源(即必须登录之后,才能访问的地址),添加session验证代码day082013年9月10日9:571.摘要加密算法1)特点:a.不可逆性:即知道了摘要(也就是密文),不能够反推出明文(没有密钥)。b.唯一性:不同的明文,有不同的摘要。2.验证码3.prototype.js的简单使用a.$(id):document.getElementById(id);b.$F(id):$(id).value;c.$(id1,id2,id3) :依据id1,id2,id3查找对应的节点,返回由这些节点组成的数组。d.strip():除掉字符串两端的空格。e.evalJSON():将JSON字符串转换成一个javascript对象。4.过滤器1)什么是过滤器?servlet规范当中定义的一种特殊的组件,可以拦截servlet容器调用的过程并进行响应的处理2)编程step1.写一个java类,实现Filter接口。step2.在doFilter方法里面,实现处理逻辑。step3.配置过滤器(web.xml)。3)过滤器的优先级当有多个过滤器满足过滤的条件,则容器依据的优先顺序来调用。4)初始化参数step1.使用来配置初始化参数。跟servlet的初始化参数配置方式一样。step2.使用FilterConfig提供的 String getInitParameter(String paramname);5.监听器1)什么是监听器?servlet规范当中定义的一种特殊的组件,用来监听servlet容器产生的事件并进行响应的处理。主要是监听容器产生的量大类事件:第一类:生命周期相关的事件,指的是容器创建或者销毁request,session,servletContext时产生的事件。第二类:绑定相关的事件,调用了以上三个对象的setAttribute,removeAttribute方法产生的事件。2)servletContext接口1)容器在启动的时候,会为每一个应用创建唯一的一个符合ServletContext接口的实例,一般将这个实例称之为servlet上下文。servlet上下文会一直存在,除非容器关闭或者应用被卸载。2)如何获得servlet上下文a.CenericServlet提供的getServletContext方法。b.HttpSession提供的getServletContext方法。c.ServletConfig提供的getServletContext方法。d.FilterConfig提供的getServletContext方法。3)作用a.绑定的数据可以被同一个应用的所有的组件访问,并且可以随时访问注意:request,session,servletContext都有setAttribute,getAttribute,removeAttribute方法。它们的区别是:a1.request,session,servletContext生存时间依次增加:request对象生存事件是一次请求与响应期间,session对象是多次请求与响应期间,servletContext会一直存在。一般来说,如果以上三个对象都可以解决绑定时的问题,应该优先使用生命周期短的。a2.以上三个对象访问的范围不一样。request对象:只有同一个请求当中所涉及的各个组件可以访问。session对象:同一个会话所涉及的各个组件可以访问。b.访问全局初始化参数同一个应用当中,可以被servlet,filter共享的初始化参数。3)编程step1.写一个java类,实现监听器接口。比如:要监听session的创建和销毁,需要实现HttpSessionListener接口stp2.实现监听器接口中的方法day092013年9月13日9:471.上传文件step1.给表单添加上传文件域,并且设置表单的enctype属性值为multipart/form-data,另外,表单的提交方式必须为post。step2.在服务器端,要使用InputStream request.getInputStream()获得一个流,通过分析该流来获得显影的数据。一般使用一些工具(比如 apache提供的commons-fileupload.jar)来分析该流。2.servlet线程安全问题1)servlet线程安全问题产生的原因a.容器在默认情况下,只会为一个servlet创建一个实例。b.当容器收到多个请求的时候,会启动多个线程来处理,如果多个线程同时访问某个servlet实例,就需要考虑线程安全问题(比如,修改servlet属性)2)解决方式a.加锁,即使用synchronized对方法或者代码块加锁b.让servlet实现SingleThreadModel接口。容器会为实现了该接口的servlet创建多个实例。所以,不建议使用。3.进制cookie以后,如何继续使用session?1)解决方式可以使用url重写机制来解决这个问题2)什么是url重写在访问服务器上的某个地址时,需要使用服务器生成的地址(该地址会添加sessionId)3)编程/用于链接和表单提交String response.encodeURL(String url);/用于重定向String response.encodeRedirectURL(String url);注意:转发不用考虑。day102013年9月13日14:02一、jsp基础(java server page java服务器端页面技术)1)什么是jsp?2)怎样写一个jsp?step1.写一个以.jsp为后缀的文件step2.添加如下的内容1)html:直接写2)java代码:a.java代码片段b.jsp表达式c.jsp声明3)指令a.page指令pageEncoding属性:告诉容器jsp文件的编码。contentType属性:设置response.setContentType的内容。import属性:导包。session属性:true(缺省)/false,当值为false,容器不再添加获得session对象的代码了(即不能够使用session隐含对象了)。isErrorPage属性:true/false(缺省),当值为true时,表示这是一个错误处理页面errorPage属性:制定一个错误处理页面。b.include指令file属性:将一个文件的内容插入到指令所在的位置。c.tablib指令引入jsp标签。4)隐含对象outrequestresponsesessionapplicationexception:当errorPage属性为true时,才能使用这个隐含对象,可以通过该隐含对象获得异常信息。config:ServletConfig实例。容器会为每一个jsp实例创建唯一的一个符合PageContext接口要求的实例,称之为jsp页面上下文。作用1:绑定数据。注意:绑定的数据,只有对应的jsp实例能够访问。作用2:提供了响应的方法来找到其他八个隐含对象。page:相当于this,jsp实例(jsp对应的servlet实例)本身。5)注释a.:允许注释的内容是java代码,并且java代码会执行,只是结果不会输出。b.:不允许注释的内容是java代码3)jsp是如何执行的?step1. .jsp先转换成.java(即servlet类)html-service方法,使用out.writer输出。-service方法,照搬。-service方法,使用out.print输出-为servlet增加新的属性或者方法。step2.调用servlet。二.jsp标签和el表达式1)jsp标签是什么?因为直接在jsp文件这里面写java代码,不方便代码的维护(比如jsp交给美工去修改),所以sun公司制订了jsp标签技术规范,利用类似于html标签来代替jsp文件中的java代码。jsp标签会对应一个标签类,容器在执行jsp标签时会调用对应的标签类中的java代码。2)el表达式是什么?是一套简单的计算规则,用于给jsp的标签的属性赋值,也可以直接使用(脱离jsp标签)。3)如何使用el表达式?1)访问bean的属性a.方式一$容器会依次从pageContext,request,session,application对象中查找绑定名称为user的对象。接下来,会调用该对象的getName方法并输出。依次:先从pageContext查找,找不到,再查找request,如果找到了,不再向下继续查找。查找:getAttribute(user);与直接使用java代码来访问bean的属性相比,使用el表达式有两个优点:会将null转化成输出。如果依据绑定名找不到对应的对象,会输出,不会报空指针异常。b.方式二$username,允许里面出现绑定名称,也允许里面出现下标(从0开始的整数,用于访问数组中的元素)c.指定查找范围:可以使用pageScope,requestScope,sessionScope,applicationScope来指定查找的范围。比如:$(sessionS)2)读取请求参数值$(param.uname)等价于request.getParameter(uname);$(paramValue.city)等价于request.getParameterValues(city);3)进行一些简单的计算,计算结果一般用于给jsp的标签的属性赋值,也可以直接输出。a.算数运算:+,-,*,/,%,其中,+只能进行求和,不能够连接字符串b.关系运算:,=,=,=,!=c.逻辑运算:&,|,!d.empty运算:判断一个字符串是否是空字符串,或者一个集合是否内容为空。以下四种情况,结果为true:空字符串空的集合null找不到对应的对象4)jstl标签1)什么是jstl?(java standard taglib java标准标签库)由apache开发jsp标签,捐献给了sun。2)怎样使用jstl标签step1.将jstl标签对应的jar文件拷贝到WEB-INFlib下。standard.jar jstl.jarstep2.使用taglib指令引入jsp标签。uri属性:指定一个命名空间prefix属性:命名空间的前缀3)jstl的核心标签a.作用:当test属性值为true,容器会执行标签体的内容。标签体可以是html,也可以是java代码。test属性可以使用el表达式来赋值var属性:指定一个绑定名称scope属性:制定绑定的范围,可以是page,session,request,applicationb.标签体 when可以出现一次或者多次,当test属性为true,执行标签体的内容,test属性可以使用el表达式。otherwise可以出现0次或者1次,表示例外。c. 该标签用来遍历一个集合,其中items属性用来制定要遍历的集合,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年扬州工业职业技术学院单招职业适应性测试题库及答案解析(夺冠系列)
- 2026年南阳工艺美术职业学院单招职业倾向性测试题库带答案解析
- 2026年九江职业技术学院单招职业倾向性测试必刷测试卷带答案解析
- 2026年山西工程职业学院单招职业技能考试必刷测试卷及答案解析(名师系列)
- 2026年安徽中澳科技职业学院单招职业技能考试题库带答案解析
- 2026年哈尔滨幼儿师范高等专科学校单招职业技能考试题库附答案解析
- 2026年朔州师范高等专科学校单招职业技能考试题库及答案解析(夺冠系列)
- 2026年中山火炬职业技术学院单招职业倾向性测试题库及答案解析(夺冠系列)
- 2026年安徽省黄山市单招职业倾向性测试必刷测试卷附答案解析
- 2026年宁波大学科学技术学院单招职业适应性考试题库附答案解析
- 农村应急机井施工方案
- 2025年江苏省公务员考试时事政治考试试卷及答案详解(考点梳理)
- 2025年社区民政个人工作总结范本
- 2025年法宣在线宪法学习试题库和答案
- 2025年贵州省综合评标专家库考试题库(二)
- 母婴护理员试题附答案(有答案)
- 2026年国家电网招聘之财务会计类考试题库500道带答案(完整版)
- 2025年宜昌市市级机关公开遴选考试真题
- 2025年及未来5年中国木醋酸行业市场深度评估及投资方向研究报告
- 劳动煮银耳汤的课件
- 【《人工智能对财务会计的影响、挑战与应对建议》4900字】
评论
0/150
提交评论