学习jsp必看的基础知识.doc
- 格式:doc
- 大小:79.50 KB
- 文档页数:4
Jsp技术整理1.web分为静态页面和动态页面静态页面-----html页面动态页面----动态页面是以ASP、PHP、JSP、Perl、或CGI等编程语言制作的,与服务器有交互的页面。
(动态页面技术通常会用到web容器)Web容器使用运行在服务器上的一个程序,用来解析动态请求,然后调用相应的代码,返回响应。
对于jsp来说,使用最多的是tomcat2.servletServlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。
它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP 服务器上的数据库或应用程序)的中间层。
Servlet创建时会写入web.xml示例:<servlet><servlet-name>loginServlet</servlet-name><servlet-class></servlet><servlet-mapping><servlet-name>loginServlet</servlet-name><url-pattern>/login</url-pattern></servlet-mapping>路径问题:在我们编写代码的时候,一般会有很多路径,这个时候就会产生路径的问题,在jsp页面中,我们通常使用如下方式:建立一个basePath: <head><base href="<%=basePath %>"/></head>这样的话,本页面的代码中的路径都会以base为基准了。
在servlet中的提交方法有有get 和post两种:GET:客户端可见,长度有限制255 ,不能上传文件Post: 客户端不可见,长度无显示,可以上传文件请求转发:在Servlet中处理完请求以后,需要跳转到某个jsp页面,不执行后面的代码,使用:GetrequestDispatcher(“路径”).forword(req,resp);实行后面的代码则使用incluede替换forword讲到Servlet请求转发,就要用到RequestDispatcher接口有两种方法,一种是forward,用于讲请求从一个Servlet传递到服务器上的另外的Servlet、JSP页面或者是HTML文件。
MVC:JSP + +Java:复习java基础知识Jsp:JSP、PHP、 三门技术被称为Web 后端开发的3P 技术,其中JSP 依托J2EE 平台更是Web 开发领域的一枝独秀。
学好JSP,是进入J2EE 企业开发的第一步。
通过本阶段内容的学习,你将能够搭建JSP 的开发环境,了解JSP 的基本语法及内部对象的使用。
Servlet:Servlet 是Server Applet 的缩写,也称为服务端小程序。
Servlet 技术一直处于不断的发展及进步之中,现在已经成为很多框架的技术基础,比如Spring、Struts2 等。
通过本阶段课程的学习,你将了解Servlet的运行原理,Servlet 过滤器的知识并能编写出相对复杂的Java Web 程序。
Javabean:JavaBeans是一个可重复使用的软件组件JavaBeans是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称beans。
JSP页面应当将数据的处理过程指派给一个或几个beans来完成,我们只需在JSP页面中调用这个beans即可,从而有效的分离的静态工作部分和动态工作部分JDBC:JDBC 是Java 对关系型数据库进行访问的最主要的API,是Java 数据库编程的技术基础。
通过本阶段内容的学习,你能够掌握数据库的基本知识及JDBC 技术的基本原理,并能够使用JDBC编写出对数据库进行增删改查的简单程序Spring:Spring 是一个开源框架,也是一个基于控制反转、依赖注入的轻量级容器,它的出现大大简化了传统的J2EE 开发模式。
Spring 的主要优势之一就是其分层架构,该架构允许使用者自主选择任意件,同时为J2EE 应用程序开发提供集成框架。
现在,Spring 已经成为J2EE 企业开发中的标准配置。
Struts2:Spring MVC是一种基于Java的轻量级Web框架,它使用了MVC架构模式的思想,将web 层进行职责解耦,用来简化日常开发。
jsp学习的重点表达式语言、JSTL、国际化、标签。
另外,时刻要提醒自己的是,JSP主要是用来做显示层的!JSP是以Java为基础的,所以Java是重中之重。
而做为Web开发工具,以下的这些Web开发技术,当然也是更通用的重点:任何Web开发人员需要必备的技巧主要有这些技术:基本技能如果想称自己是个Web开发人员,下面就是必须具备的技术。
HTML(HyperText Markup Language)HTML几乎是显示在浏览器上所有内容的语言。
难怪HTML就好像是一个Web程序员的生存本能一样。
如果你仍需要在你的HTML中查找<tr>或<b>,那么你真的需要提高你的HTML技术了。
HTML的当前版本是4.01,你可以从了解更多关于它的内容。
Servlets和JSPJava servlet技术是开发Java Web应用程序的主要技术。
它是由Sun Microsystems在1996年开发的,当前的版本是2.3,但人们正在为版本2.4做准备。
JSP是servlet技术的扩展,现在的版本是1.2(2.0版将很快定下来)。
有人认为JSP是servlets的替代,但实际并不是这样的。
Servlets和JSP是一起用于复杂的Web应用程序的。
用Java进行Web编程的一个好的开端就是学习servlet技术。
即使你打算在你的Web应用程序中只运用JSP页面,你仍需要学习servlet技术。
在更复杂的Web应用程序中,JSP页面只用于显示,而JavaBeans和自定义标签库用来嵌入商业逻辑。
即:你也必须精通JavaBeans和自定义标签库。
JavaScriptJavaScript是运行于所有的主要的浏览器中的脚本语言。
你用JavaScript来进行客户端的编程。
客户端编程中最重要的工作就是确认用户输入。
运用客户端输入验证的好处是减少服务器的工作量并提高响应时间。
另外,JavaScript可以用于重新定向(redirection)、cookie处理、控制applets、创建导航树、打开一个浏览器的一个新的实例、等等。
JSPJSP(Java Server Page)【1】JSP是服务器端运行的页面,它不仅可以包含静态的HTML代码,也可以包含动态的JA V A代码,服务器容器可以将JSP转换成Servlet发布,并接受请求。
Jsp文件只需放在应用文件下就可以了。
【2】JSP运行过程:1,(翻译阶段)JSP文件先要翻译成Java文件(Servlet),在tomcat中翻译后的java文件在tomcat下的work\Catalina\localhost中相应名字的应用目录里。
(jsp->.java) 2,(编译阶段)编译.java文件。
(.java->.class)3,(执行阶段)运行.class文件。
(.class->object的instance)【3】JSP的特点:1,JSP不需要编译2,JSP不需要进行配置3,JSP本质上就是一个Servlet4,JSP是以静态页面为主的【4】JSP的语法格式:(1)<%=····%>(expression)表达式,写表达式时不要加上分号,表达式,翻译成Java代码也就是直接使用流输出,也就不能加分号了,凡是能够产生值的常量,变量,表达式,方法调用都能够作为JSP表达式的参数。
(2)<%!····%>(declaration)声明,使用声明的变量,所创建的变量是在service方法体外,也就是翻译成成员变量,声明也可以声明内部类或者是方法的声明。
(3)<%····%>(scriptlet)代码块,代码段会原样翻译。
在代码段中声明的变量,就会被翻译的service的方法体中,也就是被翻译成局部变量。
(4)<%@····%>(directive)指令。
【5】JSP指令的语法:<%@page···%>页面指令<%@page import="..."%> 引入包例:<%@page import="java.util.*,java.sql.*"%>。
jsp基础知识JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
以下是由店铺整理关于jsp知识的内容,希望大家喜欢!JSP发展历程1.2版本JSP1.2不支持EL,但可以使用外部的JSTL标签以便使用EL。
2.0版本JSP 2.0的一个主要特点是它支持表达语言(expression language)。
JSTL表达式语言可以使用标记格式方便地访问JSP的隐含对象和JavaBeans组件,JSTL的核心标记提供了流程和循环控制功能。
自制标记也有自定义函数的功能,因此基本上所有scriptlet能实现的功能都可以由JSTL替代。
在JSP 2.0中,建议尽量使用EL而使JSP的格式更一致。
SimpleTagJSP 2.0中加入了新的创建自制标记的API,javax.servlet.jsp.tagext.SimpleTag定义了用来实现简单标记的接口。
和JSP 1.2中的已有接口不同的是,SimpleTag接口不使用doStartTag和doEndTag方法,而提供了一个简单的doTag方法。
这个方法在调用该标记时只被使用一次。
而需要在一个自制标记中实现的所有逻辑过程、循环和对标记体的评估等都在这个方法中实现。
从这个方面来讲, SimpleTag和IterationTag可以达到同等的作用。
但SimpleTag的方法和处理周期要简单得多。
在SimpleTag中还有用来设置JSP内容的setJspBody和getJspBody方法。
Web容器会使用setJspBody方法定义一个代表JSP内容的JspFragment对象。
实现SimpleTag标记的程序可以在doTag方法中根据需要多次调用getJspBody.invoke方法以处理JSP内容。
重要功能JSP2.0中的一个主要功能是JSP fragment,它的基本特点是可以使处理JSP的容器推迟评估JSP标记属性。
jsp根底学习资料电脑资料一、 JSP 技术概述在 Sun 正式 JSP(JavaServer Pages) 之后,这种新的 Web 应用开发技术很快引起了人们的关注,㈠ JSP 与 ASP 的简单比拟JSP 与 Microsoft 的 ASP 技术非常相似。
两者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。
在ASP 或 JSP 环境下, HTML 代码主要负责描述信息的显示样式,而程序代码那么用来描述处理逻辑。
普通的 HTML 页面只依赖于 Web 效劳器,而 ASP 和 JSP 页面需要附加的语言引擎分析和执行程序代码。
程序代码的执行结果被重新嵌入到 HTML 代码中,然后一起发送给浏览器。
ASP 和 JSP 都是面向 Web 效劳器的技术,客户端浏览器不需要任何附加的软件支持。
ASP 的编程语言是 VBScript 之类的脚本语言, JSP 使用的是Java ,这是两者最明显的区别。
此外, ASP 与 JSP 还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。
在 ASP 下, VBScript 代码被 ASP 引擎解释执行;在JSP 下,代码被编译成 Servlet 并由 Java 虚拟机执行,这种编译操作仅在对 JSP 页面的第一次请求时发生。
㈡运行环境Sun 公司的 JSP 主页在 .javasoft./products/jsp/ ,从这里还可以下载 JSP 标准,这些标准定义了供给商在创立 JSP 引擎时所必须遵从的一些规那么。
执行 JSP 代码需要在效劳器上安装 JSP 引擎。
此处我们使用的是Sun 的 JavaServer Web Development Kit ( JSWDK )。
为便于学习,这个软件包提供了大量可供修改的例如。
安装 JSWDK 之后,只需执行 startserver 命令即可启动效劳器。
在默认配置下效劳器在端口 8080 监听,使用 localhost:8080 即可翻开缺省页面。
JSP 基础—语法(1)指令元素——用于从JSP 发送一个信息到容器,比如设置全局变量,文字编码,引入包等1.page 指令<% @page contentType=”text/html;charset=gb2312”%>page 指令中常用属性有1:language=”xx” :JSP中嵌入的代码是xx ,通常JAVAimport =“包.*.类名..”在该JSP 页面引入包或者某个具体的类。
session =[true|false] 是否在JSP页面给你获取session对象buffer=[none|8k|指定大小] 给out对象使用的缓冲区是多大,默认8kautoFlash=[true|false] 当buffer满后,是否自动刷新到浏览器isThreadSafe=[true|false ]默认true 表示该JSP 的线程安全由程序员控制,false则对应的Servlet将实现线程安全接口关于charset 可以参照/view/1139668.htm演示:删掉pageEncofing为contentType刷新查看jsp所对应的servlet 源代码的response.setContentType();(JSP的设计者为了方便,使用charset 而不用修改servlet 语句了)import :添加, .* 查看servlet文件后面的一般都不会去改,用的不多,了解就行。
s: session = pageContext.getSession(); 对应HttpSessionj: 加session.setAttribute(“aa”,”vv”);再添加session=false 报错,发现之前内置对象session = pageContext.getSession(); 语句不见了具体:<%session.setAttribute("abc", "王麟阁");out.println(session.getAttribute("abc"));%>buffer:out.println(“content”) 一堆(多个)out 之后的信息不是马上返回给浏览器,等到buffer满了之后才一次性返回超过8k 第二次再返回page 指令中常用属性有2:errorPage = “相对JSP 页面”当JSP 页面出现错误时,自动跳转到指定的JSP页面,要求使用相对路径,当“/”开始时,表示当前web应用的根目录,如果不以”/”开头,则表示相对本JSP页面isErrorPage =[false|true] 指定该JSP 页面是否专门用于作为error页面,默认false,如果设为true,则可以在该页面直接使用exception 内置对象contentType =”text/html;charset=utf-8”指定网页以什么方式显示页面pageEncoding=”utf-8”指定Servlet引擎以什么方法翻译JSP→servlet 并指定网页以什么方式显示页面演示:errorPage:设置除数为0 ,如8/0 ,则报错新建一个error1.jsp 修改源文件errorPage=”e rror1.jsp”再看servlet文件应该发现try catch (直接搜索查找)面试时:contentType与pageEncoding的区别看图,servlet文本文档另存为看类型/link?url=UEJOyChM4Z-nnQkE0u_BwKDxQi3qrR-lV4F02qZ5X689jcPXxks8 6o8N74eG2u8jdtv8ztM_gDrCoj1lnUpjdK2.include 指令<%@ include file=”file name”%>该指令用于引入一个文件(通常是JSP文件),JSP引擎会把两个JSP文件翻译成一个servlet文件,因此也成为静态引入被引入的JSP文件只需保留page指令即可,<html><body>….均可省略演示:新的文件要删除掉html body类似于以前讲过的frameset新建a.jspb.jsp a页面引入b页面b 我是b 页面只留第一行+ 我是b页面a<body><%@ include file=”b.jsp”%>然后去看servlet文件没有b文件再强调下路径,调整b页面的位置,放在一个新的目录下3.taglib指令这个指令允许在JSP页面使用自定义的标签<myTag:yourTag num1=”123”(属性)>要用到标签(2)脚本元素可以理解就是JAVA的片段scriplet1.scriplet<% JAVA代码%>2.表达式<%=java表达式%><%=rs.getString(1)%>3.declaration声明<%! 变量声明%>比如:<%! int count=10% %><%! 函数声明%><%! intjisuan(intnum) {intresule=0;for(inti=0;i<num;i++){result=result+I;}}%>演示:<% int =90; %><h1>显示<%= i %><h1>等同于out.println() 形式输出表达式可否参与运算:<% i*77-7 %>里面没有分号,有分号是语句变量的定义:局部变量和成员变量,然后看servlet文件中的内容两个变量是否可以定义为同名:<%! inti=0 %><% inti=0 %>作用域不同<%! inti=900; %><% inti=90; %><h1>显示<%= i %><h1><% i*77-7 %><%! inti=0 %>该JSP对应的servlet的成员变量jsp本质是一个类,一个servlet类面试题:<%! inti=90; %>out.println();<% int j=90; %>out.println(“i=”+(++i)+”j=”+(++j));问:第一次访问输出什么i=91 j=91第二次访问i=92 j=91第三次访问i=93 j=91(3)动作元素弱化很多,用的很少了是使用xml语法写的额,是JSP规定的一系列标准动作,在容器处理JSP时,当容器遇到动作元素时,就执行相应的操作。
(-)根据servlet的语法规范,编写和编译基于服务器端的应用程序1.建立包结构2.弓| 入javax. servlet 和javax. servlet, httpservlet3.继承Httpservlet 类4.实现goGe t ()与doPos t ()方法5.正确编译,形成servlet类文件(%1)部署JavaBeans类文件和访问方法1.方法一:部署目录:../webapps/ROOT/WEB-INF/ciasses/访问方法:在URL中直接输入类文件名称,即http://127. 0. 0. l:8080/servlet2.方法二:部署目录:部署在../webappor/aaaa/访问方法:在URL中直接输入路径和类文件名称,即http://127. 0. 0. l:8080/aaaa/servlet3.方法三:部署目录:部署在../webapper/aaaa/利用web. xml文件的设置访问资源的技术方法,即加入代码: <servlet><servlet-name>ServletTest</servlet-name><servlet-class>pachage_name. Serv1et_class_name</servlet-class> </servlet><servlet-mapping><servlet-name>ServletTest</servlet-name><url-pattern>/testing</url-pattern></servlet-mapping〉访问方法:在URL中直接输入规定的命名策略,即http://127. 0. 0. l:8080/aaaa/testing(%1)根据servlet类文件的结构特征,利用JSP技术实现交互式访问程序设计。
针对性地练习指导文件中的相关实例。
1.建立servlet文件的基本结构(A)理论方法public class My_servlet extends HttpServlet ( public void init(ServletConfig config) throwsServletException {super, init(config);}public void service(HttpServletRequest reqest, HttpServletResponse response) throws lOException (method entity ); } }(B)工程方法public class My_servlet extends HttpServlet ( public void init(ServletConfig config) throwsServletException (super, init(config);}public void doGet(HttpServletRequest reqest, HttpServletResponse response) throws lOException (method entity );}public void doPost(HttpServletRequest reqest,HttpServletResponse response) throws lOException doGet (..));} }2.利用JSP访问servlet文件的基本方法<%@ page contentType=*text/html:charset=GB2312/r %><HTMLXB0DY ><F0RM action— My_servlet " method=get><Input Type二text name=number> <Input Type=submit value—提交></F0RM></B0DY></HTML>3.实现基于HTTP协议的doGet ()、doPost ()方法编程技术public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, lOException { method entity. •.}public void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, lOException(doPost(request, response); }4.显示servlet交互处理计算的访问结果利用out. printin (〃…..〃);语句,结合html标签语句实现之。
Servlet的工作流程接收客户端发来的显式数据(form data)同时也读取客户端发来的隐藏数据(HTTP request headers)生成结果支持HTML格式向客户端发送显式数据同时也通过状态代码(HTTP status codes)和响应头(HTTP response headers)向客户端发送隐藏数据1容器收到一个请求,把Servlet装入内存2容器调用Init ()方法,开始Servlet生命周期3 servlet ()方法提供线程,开始响应用户请求4.Servlet 线程 1 Servlet 线程 2 .. Servlet 线程n5容器结束Servlet调用destroy 0方法Respons扩展HttpServlet 类格式:publie abstract void service(IlttpServletRequest request,HttpServletResponse response)throws ServletException, lOEexception; ()说明:HttpServletRequest获取HTTP请求方式、参数名及值、客户端协议、远程主机等信息,以确定调用相应的方法。
HttpServletResponse返回响应信息,设置返回数据长度、MTEM类型、提供ServletOutStream等该方法由HttpServlet类己经实现,用户无需实现。
程序中需要实现用户HttpServlet类的两个方法doGet ()和doPost ()servlet生命周期实例化:首次请求servlet服务时,需实例servlet对象初始化:容器调用实例的init ()方法服务:若有访问提交请求要给servlet,容器调用servlet实例的service()方法每个请求分配为一个线程,而不是创建新的servlet对象----------------消亡:对实例的消亡处理,容器调用servlet实例的destroy()方法一不可逆回:实例被删除步骤1. Servlet程序的主体结构init ()设定servlet程序初始值。
用途类似applet的init ()service ()当服务器收到用户的request时,服务器则调用service ()- service ()根据HTTP request的请求格式(GET、POST等),调用相应的方法:doGet ()接收GET格式的request,并返回结果。
doPost ()接收POST格式的request,并返回结果。
另外尚有doPut、doDelete等(),但较少用•service ()需要处理request到doxxx()的任务,间接继承之。
•APT要求HTTPservlet程序需要重写doGet及doPost方法,提高运行效率destroy。
终止servlet服务时执行.Servlet直接继承此方法,无须重写用于应答的API: ServletResponse 接口public void setContentType(String type)设置响应的MIME 类型如:respons e. setContentType ( "text/html” );public ServletOutputStream getOutputStream()获得一个ServletOutputStream对象,用于在应答中写入二进制数据。
public java. io. PrintWriter getWriter () 获得一个PrintWriter 对象,用于在应答中发送字符流比如:PrintWriter out = response. getWriter (); out. println( u<htmlXbody> .... ”);用于应答的API: HttpServletResponse 接口(续)HttpServletResponse 接【]继承Servl etResponse 接I Ipublic void sendError(int status)设置状态码例:response. sendError (404);则当执行到该代码时,会转到一个错误信息处理页面:资源文件目标丢失(404错误)。
public void sendRedirect(String location)重定向至!I locatiorio 例:response. sendRedirect ( "/abc.html” );遇到该行代码,会转到abc. html页面。
采用Java Servlet API的会话跟踪javax. servlet, http. HttpSession接口封装会话跟踪的集成管理HttpServletRequest接口提供创建跟踪HttpSession对象的方法•getSession(boolean)获取一个HttpSession 对象。
•setAttribute (String, Object)向会话中添加一个属性对象•getAttribute (String)方法返回Object 的属性值javax. servlet, http. HttpServletResponse 接口方法,用于当用户拒绝 Cookie方法1 /webapps/ROOT环境,直接访问servlet file: \webapps\ROOT\WEB-lNF\classes\p\Hello. class web. xml\ROOT\WEB~INF \web. xml:<servlet> <servlet-name>hello</servlet-name><servlet-class>p. Hello</servlet-classX/servlet><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/newhello</url-pattern></servlet-mapping>url: http://127. 0. 0. 1:8080/newhcllo方法2 /webapps/new/环境,直接访问new环境的servletfile: \webapps\new\WEB-TNF\c]asses\p\Hello. classweb. xml \webapps\new WEBTNF'web. xml:<servlet> <servlet-name>hello</servlet-name><servlet-class>p. Hello</servlet-classX/servlet><servlet-mapping><serv] et-name>heHo</servlet - name〉<url-pattern>/newhello</url-pattern></serv1et-mapp i ng>url: http://127. 0. 0. 1:8080/new/newhello方法3 /webapps/new环境,使用server, xml设置新的环境,通过虚拟路径间接访问new环境的servlet/conf/server. xml<Context path=〃/n" docBase=〃/new〃 debug=〃0〃 reloadable二"true”〉</Context>file: \webapps\new\WEB-INF\classes\p\Hello.classWeb.xml \webapps\new\WEB-TNF\web. xml<servlet><servlet-name>hello</servlet-name><servlet-class>p. Hello</servlet-class></servlet><servlet-mappi ng><serv]et-name>hello</servlet-name><url-pattern>/newhello</url-pattern></servlet-mapping〉url: http://127. 0. 0. 1:8080/n/newhello方法4/webapps/new环境,使用server, xml设置新的环境,JSP通过虚拟路径间接访问new环境的servlet/conf/server. xml<Context path=〃/n〃 docBase=〃/new" debug二〃0〃 reloadable=〃true〃></Context>file: \wcbapps\new\givcnumber1. jsp〈FORM actiorF〃/new/sqrtl〃method=get> <Input Type二text name二number〉<Input Type二submit value 二〃提交〃〉</F0RM>\webapps\new\WEB-INF\classes\Sqrt.classweb.xml \webapps\new\WEB-TNF\web. xml<servlet><servlet-name>sqrt</servlet-name><servlet-class>Sqrt</servlet-class></servlet><servlet-mapping><servlet-name>sqrt</servlet-name><url-pattern>/sqrtl</url-pattern></scrvlct-mapping>url:http://127. 0. 0. l:8080/n/givenumberl. jsp方法5设置任意环境,JSP通过虚拟路径间接访问该环境的servlet1.工作文件脱离tomcat的环境,自主任意设置存储空间2.使用servlet, xml设置工作环境,通过JSP访问设定环境的servlet/conf/server, xml<Context path=〃/nl〃docBase=/,c: /newl z,debug=〃0〃 re 1 oadab 1 e=,z true> </Context>file: C:\newl\givenumber2.jsp〈FORM action="/nl/sqrt2〃method=post> <lnput Type=text name=number><Input Type=submit value=”提交”〉</F0RM>C:\ncwl\WEB-INF\classes\Sqrt. classweb. xml C:\newl\WEB~TNF\web. xml<servlet><servlet-name>sqrt</servlet-name><servlet-class>Sqrt</servlet-class〉</servlet><servlet-mapping> <scrvlet-name>sqrt</servlet-name><url-pattern>/sqrt2</url-pattern> </servlet-mapping>url:http://127. 0. 0.1:8080/nl/givenumber2. jsp。