您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > JSP 学习笔记_bruce
1WhatisJSP.2Why,WhereandHowJSP.3JSPPrinciple.4BaseJSP(Statement,Script,Expression,Direction,Action).5JSP,Lifecycle.*******************************************1WhatisJSP.1)什么是JSPJSP:JavaServerPage,JavaEE组件,本质上是Servlet。运行在WebContainer.接收HttpRequest,生成HttpResponseJSP使得我们能够分离页面的静态HTML和动态部分。2Why,WhereandHowJSP.1)为什么需要JSPServlet:javaclass---out.println(html);Jsp:scriptlanguage---html2)Jsp用在哪里UI,表现层Servlet-----Controll图解JSP与Servlet的分工合作(比较没有JSP之前Servlet是如何唱独角戏)a)单独使用Servlet。b)单独使用JSP(Model1)。c)结合JSP和Servlet(Model2)。3)如何开发JspJsp文件后缀名---.jspJsp文件的组成---html+jsp脚本元素(Java语言编写)不用在web.xml中配置!Stringwords=Welcometoourhomepage,welcometoSD0702...;%%=words%3JSPPrinciple.图解运行原理4BaseJSP(Statement,Script,Expression,Direction,Action).1)Jsp声明%!%声明类成员%!inti=100;%%!Stringword=春田花花大学;%%!privateintcounter=0;publicintcount(){return++counter;}%h1%=count()%/h12)Jsp脚本%%_jspService()中的局部代码%System.out.println(Hi,IlikeJSP.);%%Connectionconn=DriverManager.getConnection();Statementst=con.createStatement();Stringsql=select...;ResultSetrs=st.executeQuery(sql);%比较%!inti=100;%//成员变量%inti=100;%//_jspService()方法中的局部变量%!publicvoidhello(){}%%publicvoidhello(){}%//error3)表达式%=%输出数据至页面的当前位置%=Hello,JSPworld!%%=name%//%!Stringname=GiGi;%%=newjava.util.Date()%4)指令%@%pageincludetaglibpage指令----import,session,isThreadSafe,errorPage,etcimport---导入其它的包或类%@pageimport=java.util.Date%%@pageimport=java.sql.*%%@pageimport=java.util.*,java.io.*,java.net.*%session---当前Jsp是否参与会话default---true%@pagesession=true%request.getSession();%@pagesession=false%session=true时,可用内建对象session直接访问会话%=session.getAttribute(name)%-----------以下属性不再使用---------------------------isThreadSafe---当前Jsp页面是否线程安全default---true%@pageisThreadSafe=true%普通的Servlet,可以并发处理用户请求%@pageisThreadSafe=false%相当于Servlet实现了SingleThreadModel接口,不能并发处理请求(强烈要求禁止使用该属性)-----------以上属性不再使用---------------------------errorPageisErrorPage---Jsp页面中出现异常的处理方式对于有可能出现异常的页面%@pageerrorPage=error.jsp%对于处理异常的页面%@pageisErrorPage=true%%=exception%内建对象contentType---设置Jsp内容的MIME类型%@pagecontentType=text/html;charset=gbk%等价于Servlet:response.setContentType(text/html;charset=gbk);include指令---file把目标页面的内容包含到当前页面,产生页面叠加以后的输出效果%@includefile=title.html%%@includefile=booter.jsp%在Jsp编译的时候被处理taglib指令(放在JSTL处详细讲)%@tagliburi==tree%tree:gen///产生一个默认的树自定义标签(可选)5)动作jsp:actionNameattributeName=attributeValue/jsp:forwardjsp:includejsp:useBeanjsp:setPropertyjsp:getPropertyjsp:forwardpage=/jsp:forwardpage=b.jsp/相当于Servlet中通过RequestDispatcher.forward()还可以传参数jsp:forwardpage=b.jspjsp:paramname=namevalue=narci//jsp:forwardjsp:includepage=/jsp:includepage=b.jsp/相当于Servlet中通过RequestDispatcher.include()与%includefile=/比较:动作在运行期处理可以传参数jsp:includepage=b.jspflush=truejsp:paramname=namevalue=narci//jsp:includeflush属性flush指示在读入包含内容之前是否清空任何现有的缓冲区。JSP1.1中需要flush属性,因此,如果代码中不用它,会得到一个错误。但是,在JSP1.2中,flush属性缺省为false。由于清空大多数时候不是一个重要的问题,因此,我的建议是:对于JSP1.1,将flush设置为true;而对于JSP1.2及更高版本,将其设置为关闭。Jsp中的注释:a、java方格注释编译器会忽略掉此类注释中的内容%--urcomments--%%//urcomments%%/*urcomments*/%%//newjava.util.Date()%b、html风格注释编译器会执行此类注释中的代码!--urcomments--out.println(!--urcomments--)!--newjava.util.Date()--例子:1)关于外星人的问卷调查我欢迎外星人进入我们的世界,帮助我们发展。我害怕外星人,无法接受他们进入我们的世界。外星人很神秘,我不知道存不存在外星人。我喜欢听UFO的故事,但也许那只是一些很好玩的故事而已。不要和我谈论外星人,地球人已经很复杂了。如果有外星人,我想和他们说:嘿嘿,我们可以做朋友么?2)NumberGuess.jsp猜一个数字,如果猜对显示恭喜信息,猜错则提示客户猜的数字太小还是太大了。5JSP,Lifecycle(与Servlet的生命周期比较).//JSP容器第一次装载jsp文件时调用一次publicvoid_jspInit(){System.out.println(this.getClass()+:entering_jspInit()...);}//每个请求都要调用一次publicvoid_jspService(HttpServletRequestrequest,HttpServletResponseresponse)throwsjava.io.IOException,ServletException{}//jsp文件被修改时,JSP容器会销毁旧的jsp文件对应的对象,//重新装载一次更新后的jsp文件的内容(只调用一次)publicvoid_jspDestroy(){System.out.println(this.getClass()+:entering_jspDestroy()...);}6.homework1)好又多优惠政策购买金额超过500RMB有90%折扣购买金额超过1000RMB有85%折扣购买金额超过1500RMB有80%折扣购买金额超过2000RMB有75%折扣购买金额超过10000RMB有70%折扣,赠送会员卡一张2)九九乘法表day21Jsp调用JavaBean2异常处理3JAAS实现安全(可选)**************************************************************1Jsp调用JavaBean分离页面的显示代码和业务逻辑代码,将业务代码放到后台的JavaBean中。减少了JSP中的脚本代码,便于维护和复用。JavaBean:1)无参数的构造方法(默认构造方法)2)标准getter、setter方法3)如果要支持RMI的,要实现Serializablejsp:useBean---在Jsp页面中使用一个JavaBeanjsp:useBeanid=class=scope=/id:javaBean对象名class:beanclass的位置scope:javaBean对象的共享范围(page,request,session,application)page:当前页面范围request:同一个请求范围forward,includesession:同一个会话application:同一个应用ServletContextJSP内建对象(直接可是使用,无需我们重新定义)例子:Studentjsp:useBeanid=stuclass=vo.Studentscope=session/等价于%Studentstu=(Student)session.getAttribute(stu);if(stu==null){stu=newStudent();session.setAttribute(stu,stu);}%可以用表达式获得bean的值%=stu.getName();%对JavaBean的属性赋值1)jsp:setPropertyname=property=value=/name:JavaBean对象名property:JavaBean属性名value:属性值jsp:setPropertyname=stuproperty=namevalue=Bobo/等价于%stu.setName(Bobo);%可以嵌套JSP表达式jsp:setPropertyname=stuproprty=namevalue='%=request.getParameter(name)%'/2)设置JavaBea
本文标题:JSP 学习笔记_bruce
链接地址:https://www.777doc.com/doc-6226113 .html