jsp学习笔记(初级)
- 格式:docx
- 大小:52.43 KB
- 文档页数:16
JSP基础教程学习笔记JSP基础教程学习笔记 (1)一、jsp简介 (2)二、jsp结构 (2)三、JSP生命周期 (3)四、jsp语法 (4)五、jsp指令 (7)六、jsp动作元素 (9)七、jsp隐含对象 (17)八、jsp客户端请求 (20)九、jsp服务器响应 (25)十、JSP HTTP状态码 (29)十一、JSP表单处理 (33)十二、JSP过滤器 (40)十三、JSP Cookies处理 (43)十四、JSP Session (46)十五、JSP文件上传 (51)十六、JSP日期处理 (56)十七、JSP页面重定向 (62)十八、JSP点击量统计 (63)十七、JSP自动刷新 (66)十八、JSP发送邮件 (68)一、jsp简介Java Server Pages,一种动态网页开发技术,使用jsp在html网页中插入java代码,标签通常以<%开头,以&>结尾。
二、jsp结构网络服务器需要一个JSP引擎,也就是一个容器来处理JSP页面。
容器负责截获对JSP页面的请求。
Jsp容器与web服务器协同合作,未jsp的正常运行提供必要的运行环境和其他服务,并且能够正确识别专属于jsp 网页的图书元素。
下图显示jsp容器和jsp文件在web应用中所处的位置:Jsp处理的步骤:1.同普通网页一样,浏览器发送http请求给服务器;2.Web服务器识别出这事一个对jsp网页的请求,并且将该请求传递给jsp引擎。
通过使用URL或者.jsp文件来完成;3.Jsp引擎从磁盘中载入jsp文件,然后将它们转化为servlet。
这种转化只是简单的将所有模板文本改用println()语句,并且将所有的jsp元素转化成java代码;4.Jsp引擎将servlet编译成可执行类,并且将原始请求传递给servlet引擎;5.Web拂去其的某组件将会调用servlet引擎,然后载入并执行servlet类。
1,JSP脚本元素<%--comment-->注释写在JSP程序代码中但不发送到客户端1,隐藏注释<!—comment[<%=表达式%>]-->显示注释,发送到客户端2,声明语句<%!declaration;声明变量或者是方法%>声明必须以;结尾,有!的就是全局变量,无就是局部变量3,脚本段(即JSP页面中所内嵌的一段Java程序代码)<%代码%>4,表达式<%=表达式%>2,JSP指令元素1,Page指令(定义JSP页面中的全部属性,描述与页面相关的一些信息)<%@page language=”默认是Java” contentType=”text/html;charset=gb2312返回浏览器的内容类型”%>2,include指令(用来包含一个静态的文件)<%@include file=”relative url所包含静态文件的相对地址”%>所包含的静态文件将插入到原JSP文件中放<%@include%>地方3,taglib指令(用来定义标签库及其自定义标签的前缀)??????????????????????????????????????,3,JSP动作元素1,<jsp:include>元素(用来包含其他静态页面或动态页面)<jsp:include page=”relative url”>【<jsp:param name=”参数名1” value=”参数值”><jsp:param name=”参数名2” value=”参数值”>】将各个参数传到所包含静态页面或动态页面</jsp:include>include指令与include动作的区别include指令是把其他页面的Java源代码加进来,跟本页面的代码合并在一起形成一个页面,然后再对这个合并好后的页面进行编译。
JSP复习笔记一、内容汇总1. jsp简介: jsp是动态的页面语言,是以Java为主的跨平台web开发语言.一般jsp代码直接内嵌在html中,即jsp只是简单的将Java放到html网页中去而已,html可以直接改为jsp.jsp原理:jsp程序由JSP Engine先将它转换成Servlet代码,接着将它编译成类文件载入执行;只有当客户端第一次请求JSP时,才需要将其转换并编译.2. .jsp运行环境: jsp是动态的代码,必须有服务器来解析这些代码,于是用到了Tomcat这款免费服务器.3. .jsp基本语法: 1)标记:<%程序代码区%> 2)表达式:<%=...%> 3) 3)注释4)JSP声明:<%! ...%>4. Dircetive(指令)格式:<%@ 指令属性="属性值"%>指令的设定不能重复制定(除了import外)常用的指令有:import、contentType、errorpage、page、include常用指令的使用方法5. JSP编程的内置对象(也叫隐藏变量)jsp页面中隐含了一些变量,这些你可以直接使用,不需要关心这些变量是如何创建出来的.常用的隐含变量包括:request:请求作用域response:请求响应session:会话作用域application:应用作用域out:输出注意:隐含变量只能在<%%>标记内使用6. jsp内置作用域之间的区别作用域的作用:用来临时存储一个值作用域内可以通过setAttribute来存储一个值,也可以通过getAttribute来提取一个值.jsp中的四个作用域按范围从小到大排列为: pageContext<request<session<application pageContext:只在当前页面有效,可以使用这个对象来管理其他的隐含对象request:表示在一个请求的作用域里面有效的.pageContext保存的值,只在当前页面有效,超出本页面均无效, 在以下的两种情况是有效的<jsp:include>和<jsp:forward>session作用域:表示在一个会话范围内有效,有两种情况会话内容会自动失效1).页面关闭,session内值没有了2).超时(通过session-timeout可以设置)3).手工注销sessionsession.invalidate();application作用域:代表在服务器的范围内是有效的,如果服务器关闭,则作用域内存储的任何值都将失效7. 参数传递1)如果是超链接,可以用以下方式:<a href="P.jsp?username=zhangshan&pwd=123456&age=25"> 链接</a>2)如果是form表示a.可显示的控件<input type="text" name="username">b.不需要显示在页面上<input type="hidden" name="pwd" value="<%=pwd%>">3)如果是jsp的include和forward标签<jsp:include flush="true" page="*.jsp?username=zhangsan&pwd=123456"><jsp:param name="age" value="28"></jsp:include>4)如果是JavaScript方式<script type="text/javascript">function demo(){var v = document.all('username').value;location.replace("*.jsp?username="+v+"&age=22");}</script><input type="text" name="username"><br><input type="button" value="点击"onclick="location.href='*.jsp?pwd=123456'"><br><input type="button" value="replace点击"onclick="location.replace('V.jsp?pwd=123456789')"><br><input type="button" value="动态取值" onclick="demo()">8. 数据提交方法提交方式分为get和post两种区别:A.post提交方式相对而言,比较安全;B.get只是适合于小数据的传递,也就是说,只有post才能传递大数据,比如在文件上传时,就必须将method指定为post.9. 从request作用域提取所有的参数名称方法:Enumeration<String> e= request.getParameterNames();while(e.hasMoreElements()){String str = e.nextElement();out.println(str+"="+request.getParameter(str));}10. 从request作用域提取多个值使用request作用域内的getParameterValues方法,请注意:选择项的名字必须相同,否则无法同时得到多个值<form action="*.jsp">个人爱好:<br><input type="checkbox" name="love" value="sport">体育<BR><input type="checkbox" name="love" value="finance">财经<BR><input type="checkbox" name="love" value="news">新闻<BR><input type="radio" name="sex" value="male" checked>男<input type="radio" name="sex" value="female">女<input type="submit"></form>//得到多个值String[] loves = request.getParameterValues("love");for(String str:loves){out.println(str);}for(int i=0,i < loves.length(),i++){String item=items.get(i);}String strSex = request.getParameter("sex");out.println(strSex);11. 请求分发器RequestDispatcherRequestDispatcher类表示一个请求的分发器,其效果等同于jsp:forward标签方法: request.getRequestDispatcher("P.jsp").forward(request,response);和jsp:forward相同的是,该分发器转向后的request和源页面中的request为同一个.二、典型问题1. JSP如何处理HTML FORM中的数据?通过内置的request对象即可,如下:<%String item = request.getParameter("item");int howMany = new Integer(request.getParameter("units")).intValue();%>2. JSP能进行递归调用吗?当然可以,如对form的提交给本页3. 在JSP如何包含一个静态文件?静态包含如下:<%@ include file="copyright.html" %>动态包含如下:<jsp:include page="copyright.html" />在JSP中可以使用如下方式包含纯HTML:<!--#include file="data.inc"-->4. 能象调用子程序一样调用JSP吗?当然可以,用<jsp:include page="relativeURL" flush="true"/>5. 在JSP中如何使用注释?主要有四中方法:1。
Jsp基础知识.txt如果有来生,要做一棵树,站成永恒,没有悲伤的姿势。
一半在土里安详,一半在风里飞扬,一半洒落阴凉,一半沐浴阳光,非常沉默非常骄傲,从不依靠从不寻找。
1 Jsp基础知识总结Jsp我们学完也有好长一段时间间了,过程中总结的一点点基础知识,拿来与初学者分享,直到最后做我们一个小小的项目,宠物医院,也是用我们最简单的工具Jcreater4.0来做的,呵,到了Ecliplse下才发现,开发速度如此之快,不过这样也打好了我们的基础....不多说了,把所学到的小小总结发来至此吧,愿给初学者带来便利,同时愿高人给以指点不足之处.....首先来说一下我们jsp的课程:第一部分为Servlet技术,包括Servelt入门,会话跟踪,JavaMal和Servlet.第二部分就是Jsp技术,包括:jsp简介,jsp脚本和指令的使用,jsp 隐式对象,JavaBean与jsp中的标准动作,jsp表达式语言,自定义标签,jsp自定义表签库.第三部分就是过滤器的设计模式,包括过滤器和MVC设计模式.一.Servlet知识及常见错误和规律.1.桌面运行程序与WEB应用程序在过程实质是一样的---基于请求与响应的过程.2.http协议(超文本传输协议)1).无状态:多次请求信息之间无联系.2).用于internet发送请求和响应消息3).使用端口接收和发送消息,默认为80端口.端口:为内存缓冲区(多线程接收数据)windows: 0---65535端口0---4096为系统端口3.什么是Servlet?Server let服务器端小程序.用来处理客户端发送的请求,并由服务器响应给客户端的java编写的程序.Servlet只在服务器运行4.Servlet详解:import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*;public class MyServlet extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{response.setContentType("text/html;charset=gb2312");request.setCharacterEncoding("gb2312");response.sendRedirect("Login.jsp"); //重定向方法request.getParameter(""); //读取客户端数据/ /以下方法为转发,不同于重定向的是:转发时数据不丢失.ServletContext context=this.getServletContext();RequestDispatcherdispatcher=context.getRequestDispatcher("/welcome.jsp");dispatcher.forward(request,response);...//以下方法为包含(用得相对较少)dispatcher.include(request,response);}public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{doGet(request,response);}}(2).当需要向Servlet传递参数的时候,Src="Servlet?name=' ' ";5.执行servlet时,发生下载提示:(1).可能性一:text/html;charset=GBK中间分号写成逗号.(2).可能性二:XML中配置信息出错.(3).可能性三:如定义全局变量时,例:CONTENT_TYPED在以后所用中放在双引号之中.(4).可能性四:当上面的text/html,charset中写错字符的时候,也会提示下载.6执行servlet时,发生404错误:(1).多为xml中配置出错.(2).可能在servlet通信方法中url出错.(3).表单提交时:action路径.(4).比较弱智的错误就是标记写错,请仔细检查.7.执行servlet时,发生403错误:(1).tomcat下站点里发生错误.8.执行servlet时,发生405错误:(1).servlet中没有post提交方法时.95.执行servlet时,发生500错误:(1).多数为servlet程序代码中发生异常错误.10.执行时,取出的数据为null.就要根据实际情况对应错误提示去找.作者:binture2007-5-16 10:27 回复此发言-------------------------------------------------------------------------------- 2 Jsp基础知识总结11.执行jsp页时,发生500错误提示....多数为jsp页面在转译过程中发生编译错误! 甚是严重错误,可以按提示回头去找...二.XML配置<!--config中的配置信息,当中配置需要在servlet中的xml中--><servlet><init-param><param-name>sess</param-name><param-class>com.serv<param-class></init-param><servlet-name>Myservlet</servlet-name><servlet-class>com.Myservetl</servlet-class></servlet><!--此为对Myservlet进行映射--><servlet-mapping><servlet-name>Myservlet</servlet-name><servlet-class>/url</servlet-class><servlet-mapping><!--context中配置信息--><context-param><param-name>ses</param-name><param-class>com.ser</param-class></context-param>注意:配置信息只能读取,并且config是在单个Servlet中能访问,context是全局访问三.========================会话跟踪技术总结========================用户授权.隐藏表单域URL重写Cookie使用--------------------------------------------------------------------------------------------1.会话:是同一客户端和服务器之间在同一段时间的多次请求和响应.2.Session使用(重点)HttpSession session=request.getSession();session.setAttribute("name",Object); //附值session.getAttribute(); //取值session.removeAttributer();3.Cookie(类)1).Cookie是什么?cookie是一段字符串,由HTTP支持,在客户端可以永久保存.写入(硬盘).每次请求,响应中都会为cookie留有空间.2).用法:Cookie cookie=new Cookie("name",cookie); //必须指定cookie的键与值,且必须为字符串.response.addcookie(cookie);cookie.setMaxAge(3600); //以秒为单位.//读取客户端发送过来的cookie,返回值类型为: cookie数组request.getCookies();//循环读取键与值.使用过程:(1).生成cookie, new cookie("","")(2).设置生存周期 >0,SetMaxAge(秒).(3).发送到客户端:response.addCookie(cookie);小常识:(1).一个网站最多向一个客户端写20个cookie.(2).一个客户端最多接收300个cookie.4.Session与Cookie这间的关系:session的ID作为Cookie的值在客户端与服务器之间进行传递.--------------------------------------------------------------------------------------------四.构建实体Bean的原则:/** 1.bean类为公有* 2.类成员为私有* 3.必有一个无参构造* 4.有set()和get()方法* 5.方法命名为setXxx()或getXxx()方法*/五.MVC实现数据封装此数据封装标准按MVC总结.所需内容: 1.Servlet 2.JavaBean 3.OperBean(DBconnection) 4.Jsp由Servlet提取前台数据,然后将数据封装于JavaBean中,再实例化OperBean,调用OperBean中方法,将JavaBean对象以参数的形式传过去,并进行一系列的操作后,返回数据存入ArrayList中或者其它集合内,并将集合对象封装Session对象中,便于在前台取值.Servlet控制:........Arraylist lis=new ArrayList();String name=request.getParameter("username");JavaBean bean=new JavaBean();bean.setName(name);OperBean oper=new OperBean();lis=oper.operMethod(bean);HttpSession session=request.getSession();session.setAttribute("list",lis);OperBean逻辑:...public ArrayList OperMethod(JavaBean bean){ArrayList lis=new ArrayList();String usr=bean.getName("name");String sql="select * from student where name='"+usr+"'";DBconnection db=new DBconnection();...//操作数据业务return lis;}前台业务:...ArrayList list=(ArrayList)session.getAttribute("lis");Iterator ite=list.iterator();while(ite.harNext()) //遍历输出{JavaBean bean=(JavaBean)ite.next();.//取bean中值}//由此可以进行"用户登陆","数据的增删改查","注销登陆"等操作.....以上所有jsp技术都是没有与struts等框架相关的,只是简单的MVC思想,只有懂得以上简单的思想,才可以进一步的对框架这些高层次的东西钻研,我感觉是如此,毕竟我也是个初学者,还有好多知识不懂,也在不停的学习之中,如果有哪个朋友有好的见意或者好的学习方法,请多多指教!基础知识概述:JSP(IAVA SERVER PAGES)是由Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准,其在动态网页的建设中有其强大而别特的功能,他主要用于创建可支持跨平台及跨Web服务器的动态网页。
Jsp与javabeaneBean标记的格式如下:<jsp:useBean id=”给bean起的名字”class=”创建bean的类”scope=”bean的有效范围”></jsp:useBean>或<jsp:useBean id=”给bean起的名字”class=”创建bean的类”scope=”bean的有效范围”/>2.表单提交乱码处理:<%request.setCharacterEncoding(“utf-8”);%>Servlet:1.如果有HTTP请求信息的话,获取该信息。
可通过调用HttpServletRequest类对象的以下方法获取:getParameterNames() //获取请求中所有参数的名字getParameter() //获取请求中指定参数的值getParameterValues() //获取请求中所有参数的值2.Servlet中的service()方法可以针对get和post两种请求类型,而doPost()和doGet()方法分别只能对应客户端的Post和get方式的请求。
3.Servlet可以配置一些初始化参数如:<Servlet><init-param><param-name>number</parame-name><param-value>100</param-value></init-param></Servlet>这段代码指定参数number 的值为100,在servlet中可以再init()方法体中通过getInitParameter()方法访问这些初始化参数。
4.启动转入优先权:<servlet><servlet-name>servlet</servlet-name><servlet-class>com.dfd</servlet-class><load-on-startup>5</load-on-startup></servlet>5.public interface Servlet;这个借口是所有Servlet必须直接或间接实现的接口,它定义了以下方法:init()方法,6.表单提交给servlet时,如果用get方法时,中文出现乱码,改用post方法时,就显示正常。
JSP学习笔记之基础语法jsp页⾯元素构成jsp页⾯组成部分有:指令,注释,静态内容,表达式,⼩脚本,声明。
jsp指令page指令:通常位于jsp页⾯的顶端,同⼀个页⾯可以有多个page指令include指令:将⼀个外部⽂件嵌⼊到当前jsp⽂件中,同时解析这个页⾯中的jsp语句taglib指令:使⽤标签库定义新的⾃定义标签,在jsp页⾯中启动⾃定⾏为page指令语法<%@page属性1="属性值" 属性2="属性值1,属性值2" 属性n="属性值n"%>jsp注释在jsp页⾯的注释。
HTML的注释:<!--html注释--> //客户端可见jsp的注释:<%--html注释--%> //客户端不可见jsp脚本注释://单⾏注释/**/多⾏注释jsp脚本在jsp页⾯中执⾏的java代码语法:<%java代码%>jsp声明在jsp页⾯中定义变量或者⽅法语法:<%!java代码%>jsp表达式在jsp页⾯中执⾏的表达式语法:<%=表达式%> //注意:表达式不以分号结束jsp页⾯的⽣命周期JSP的⽣命周期分为四个主要阶段是⾮常相似的Servlet的⽣命周期,并有如下⼏要点:JSP 编译:当浏览器请求⼀个JSP,JSP引擎⾸先检查它是否需要编译页⾯。
如果页⾯从来没有被编译,或者如果JSP已经被修改,因为它是最后⼀个编译JSP引擎编译的页⾯。
编译过程包括三个步骤:•解析JSP。
•打开JSP成servlet。
•编译这个servlet。
JSP初始化:当⼀个容器加载⼀个JSP它的任何服务请求之前调⽤jspInit()⽅法。
如果您需要执⾏JSP特定的初始化JSP 执⾏:JSP的⽣命周期的这个阶段代表请求的所有交互,直到JSP被破坏。
当浏览器请求⼀个JSP与页⾯已经被加载并初始化时,JSP引擎调⽤JSP中的_jspService() ⽅法。
什么是动态网页技术?当浏览器进程发出HTTP request时,服务器端的CGI程序((CGI 脚本,script)运行起来,生成一个html文件,再作为HTTP的响应报文传送回浏览器。
如何理解JSP技术?JSP就是一种动态网页技术,简单理解JSP=HTML+Java程序段,具体来说是这样的:在HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp),这个文件放在Web Server上。
当浏览器向Web Server发出HTTP request的时候,Java 程序段被Java Serlet Engine驱动执行,执行结果连同HTML一起返回给浏览器。
Java Servlet是JSP技术的基础技术,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。
那什么是Servlet呢?JSP最终也是被编译成Servlet执行,Serlet实际上就是一个个可以运行的Java类。
Servlet命名是取了Sever和Applet,这个名字取得很好,Servlet就是运行在Sever上的Applet。
Java与Javascript有关系吗?是两个不同的东西,JavaScript 是一种描述性语言,它可以被嵌入HTML 的文件之中。
通过JavaScript 可以做到响应用户的需求事件(如表单的输入),这样当一位使用者输入一项信息时,它不需要通过网络传送到服务器端进行处理再传回来的过程,而可以直接在客户端进行事件的处理,用户体验好!所以说,JavaScript仅仅是HTML的一种辅助脚本,很简单的,而Java则是一套很复杂的技术,可以是程序设计语言、Java的runtime (实际上就是JVM,用于运行软件)、Java类库(用于开发软件)。
JSP学习笔记(一)-----概述1.JSP是Java Server Pages的简写。
2.用JSP开发的Web应用是跨平台的.3.JSP技术是Servlet技术的扩展。
Servlet是平台无关的,100%纯Java的Java服务端组件。
4.下面就是一个简单的JSP页面:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>欢迎访问网上商店</TITLE></HEAD><BODY><H1>欢迎</H1><SMALL>欢迎,<!-- 首次访问的用户名字为"New User" --><% out.println(Utils.getUserNameFromCookie(request)); %>要设置帐号信息,请点击<A HREF="Account-Settings.html">这里</A></SMALL><P>页面的其余内容。
.</BODY></HTML>5.下面是JSP 和其他类似或相关技术的一个简单比较:1).JSP和Active Server Pages(ASP)相比Microsoft的ASP是一种和JSP类似的技术。
JSP和ASP相比具有两方面的优点。
首先,动态部分用Java编写,而不是VB Script或其他Microsoft语言,不仅功能更强大而且更易于使用。
第二,JSP应用可以移植到其他操作系统和非Microsoft的Web服务器上。
2).JSP和纯Servlet相比JSP并没有增加任何本质上不能用Servlet实现的功能。
但是,在JSP中编写静态HTML更加方便,不必再用 println语句来输出每一行HTML代码。
更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计专家进行HTML设计,同时留出供Servlet程序员插入动态内容的空间。
JSP详解JSP JSP (1)1、JSP (2)2、怎么写JSP (2)3、JSP的组成 (2)1)、HTML (2)2)、JAVA代码 (2)3)、指令 (2)4)、隐含对象 (3)5)、活动元素(A CTION E LEMENT) (3)6)、注释 (4)4、.JSP文件转换成.JAVA文件 (4)5、转发 (4)1)、什么是转发 (4)2)、编程 (5)3)、转发要注意的问题 (5)4)、转发的特点 (5)5)、转发与重定向的区别 (5)6、路径问题 (5)1)、相对/绝对路径 (6)2)、怎样写绝对路径 (6)7、JSTL与EL表达式 (6)1)、JSTL是什么 (6)2)、标签是什么 (6)3)、EL表达式是什么 (6)4)、EL表达式的基本语法 (6)A、访问bean的属性 (6)B、访问请求参数 (7)C、计算表达式的值 (7)5)、JSTL核心标签的使用 (7)8、EL函数 (9)1)、EL函数 (9)2)、怎么使用 (9)3)、自定义EL函数 (9)4)、自定义标签 (9)JSP详解1、jspjava server page(java服务器端页面技术)sun公司制定的一种服务器端动态页面生成技术规范。
因为直接使用servlet生成动态页面过于繁琐,而且难以维护,所以,jsp出现了。
2、怎么写JSP只需要写一个以.jsp为后缀的文件,文件包含的内容,主要是html以及少量的java代码。
Jsp文件不需要去编译,当请求到达服务器,由服务器将.jsp文件转换成.java 类(该java类就是servlet)。
然后执行servlet的service()方法(当然,在执行之前,会先编译,然后构成相应的实例)。
3、jsp的组成1)、htmlhtml(包括html标记、文本、css样式、javascript),直接写在.jsp的文件里就行了。
2)、java代码A、java代码片段:语法:<%java代码%>B、jsp表达式语法:<%=java代码%>C、jsp声明语法:<%! java代码%>3)、指令JSP引擎文件(容器中的一个特定模块)负责将.jsp文件转换成.java文件。
Servlet笔记第一:web项目异常信息,问题详情200:表示正常。
404:表示找不到界面。
403:禁止你访问。
500:程序内部错误。
第二:javaEE问题javaEE:1:不提供jar包,只提供一些列的标准。
第三:Servlet 详情servlet:是可以在任何服务器端运行的小程序。
实现servlet三个类:GenericServlet(实现servlet,但还有方法未实现),HttpServlet(抽象类,继承了GenericServlet)。
HttpServlet类:doGet()方法:处理get请求。
(就是在url地址栏里,写地址)doPost()方法:处理post请求。
(就是在form提交,method=“post”)doHead()方法:只获取http的头信息,不获取内容。
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {}:request:参数,封装了客户端到服务器端的一系列的请求。
response:参数,封装了服务器端到客户端的一系列的反馈。
init();init(参数);含有两个init()方法。
init()方式只执行一次,第一次初始化的时候。
第四:Servlet生命周期servlet生命周期:JAVAEE的要求servlet就new一个,只要程序不停止,那么这个new的对象一直在内存中。
有的服务器很怪,new 了多个,利用池的方式对外提供服务。
destroy()://在webapp退出的时候Servlet的声明周期:加载:classLoader实例化:new初始化:init(servletConfig)//servletConfig:servlet配置处理请求:service doGet doPost退出服务:destroy()如果不是分布式,那么servlet只有一个servlet实例对象。
JSP1、使用<%,%>加入JA V A程序片。
JSP基于JA V A语言,名字区分大小写.2、运行原理【首次运行】JSP文件→译成java文件→生成字节码→响应请求【再次运行】直接运行字节码→响应请求——————————————————————————当多个客户请求一个jsp文件时,JSP引擎每一个客户启动一个线程而非进程,效率提升3、服务器搭配:1、先安装JDK2、解压缩tomcat文件夹3、增加环境变量:JA V A_HOME == JDK安装目录TOMCAT_HOME == TOMCA T安装目录PATH == JDK安装目录下的bin目录4、启动tomcat\bin\startup.bat脚本,启动tomcat服务器5、浏览http://localhost:8080,测试安装6、运行tomcat\bin\shutdown.bat来关闭tomcat目录4、服务器目录:tomcat\webapps\root为网站根目录tomcat\webapps\work为JSP编译的JA V A和字节码文件存放目录二.JSP的基本结构1、JSP元素:HTML、JSP标签、就是和方法、JA V A程序、JA V A表达式。
2、成员变量和成员方法的声明:在<%! 和%>标记符号之间声明成员变量时,成员变量和成员方法是类级别变量,多个客户共享这些成员变量。
——问题——当多个线程【多个客户】访问同一个共享变量时,并试图同时修改一个变量时,将会发生共享冲突,需要使用synchronized进行锁定在<%!和%>里声明的方法为成员方法时,成员方法里的局部变量当方法执行完成时就回收内存。
但在方法里使用成员变量里。
也需要使用synchronized进行锁定在<%!和%>标记符号之间声明的类,和上面在<%! 和%>之间声明的变量和方法一样。
是子类。
多个进程共享一个类对象3、程序片:在<% 和%>中插入JA V A程序。
Jsp学习笔记by icecold ----------------------------------------------------------------------------------------------------------------------1、管理cookiea)Cookie是小段的文本信息,通常使用cookie可以标识用户身份,记录用户名或密码、跟踪重复用户。
b)Cookie在服务器端生成并发送给浏览器,浏览器将cookie的key/value保存到某个指定的目录中,服务器的名称与值可以由服务器端定义。
c)通过cookie的getCookies()方法可以获取到所有的cookie对象集合,然后通过cookie对象的getName()方法获取到指定名称的cookie,再通过getValue()方法即可获取到cookie对象的值。
另外,讲一个cookie对象发送到客户端使用了response对象的addCookie()方法。
2、Response对象a)Response代表的是对客户端的响应。
主要是将JSP 容器处理过的对象传回到客户端,response对象也具有作用域,它只在JSP页面内有效。
b)重定向网页是通过使用sendRedirect()方法,将响应发送到另一个指定的位置进行处理。
重定向可以将地址重新定向到不同的主机上,在客户端浏览器上将会得到跳转的地址,并重新发送请求链接。
用户可以从浏览器的地址栏中看到跳转后的地址。
进行重定向操作后,request中的属性全部失效,并且进入一个新的response对象的作用域。
c)在JSP页面中使用sendRedirect()方法的时候前面不要有html代码,并且在重定向操作之后紧跟一个return,因为重定向之后下面的代码已经没有意义了,并且还可能产生错误。
3、设置HTTP文件头a)response.setHeader("refresh","5");//设置网页每5分钟自动刷新b)Response.setHeader("refresh","2,URL=welome.jsp");//设置2秒后自动转向欢迎页面c)response.setContentType("text/html");//设置相应类型4、设置输出缓冲a)一般情况下,服务器端要输出到客户端的内容不会直接写到客户端,而是先写到一个输出缓冲区;只有在下面的三种情况下,才会把缓冲区的内容写到客户端。
JSP学习笔记1.JSP基础语法 (2)1.1JSP的9种内置对象: (2)1.2四种属性范围 (2)1.3request主要用途 (2)1.4response操作 (3)1.5cookie的基本操作 (4)1.6Session内置对象 (4)1.7application对象 (5)1.8config和web (5)1.9分页实现 (6)2.J AVA B EAN的基本应用 (6)2.1javabean的编写要求 (6)3.EL表达式 (7)1.JSP基础语法1.1 JSP的9种内置对象:1.2四种属性范围Page:当前页:pageContext一个属性只能在一个页面中取得,跳转到其他页面无法取得。
Request:一次服务器请求范围:一个页面中设置的属性,只要经过了服务器跳转,则跳转之后的页面可以继续获得属性。
Session:一次会话:一个用户设置的内容,只要是与此用户相关的页面都可以访问。
Application:上下文中:在整个服务器上设置的属性,所有人都可以访问。
1.3 request主要用途1.request接受对象数据,reques.getParameter(“数据名称”);2.通过两种处理乱码方式。
2.1.2.2.通过setCharacterEncoding(“GBK”);3.Post和Get的区别。
Get提交·会在地址栏中显示提交的内容;·地址栏最大能存放4K~5K容量的内容,大量无法提交。
Post提交·不再地址栏中显示提交的内容;·本身不受地址栏长度限制,但如果上传内容过多会产生http超时。
4.隐藏域传递参数<Input type=”hidden” name = “name”,value=”value”/>隐藏域内容客户端不会直接显示,可以用来传递参数。
5.接收多个重名参数String[] getParameterValues(String name) 获得一个所有内容的对象数组Enumeration getParameterNames() 获取所有参数名称的一个Enumeration6.获取IP地址和端口客户端IP:String getRemoteAddr()客户端端口:int getRemotePort()服务器IP:String getLocalAddr()服务器端口:int getLocalPort()1.4 response操作1.Response的主要方法2.Request取得头信息String getHeader(String name) 根据名称取得头信息Enumeration getHeaders(String name) 取得全部头信息,返回Enumeration类型,可以通过Enumeration enu = request.getHeaders() 获取全部头信息。
第一、二、三课
jsp入门
jsp原理
jsp声明<%! %> 在这里面声明的变量是全局变量<% %>在这里面声明的变量是局部变量
注释:
<%-- -- % > <%// % > <%/* */ % > 表达式:
<%= %>
九大内置对象
jsp 语法
1.指令元素(编译指令)
①page指令
pl:<%@page language="java"import="java.util.*"pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
常用的属相有import,contentType,errorPage,isErrorPage
②include 指令
<%@include file="路径"%>
Ps:路径是相对路径。
由于该方法引来的页面会和当前页编写成一个serlet文件,所以被引页和当前页的页面编码得相同。
③taglib指令
(略)
2.脚本元素
<%=java表达式%>
<% java代码//int i = 10 局部变量%>
<%! int j = 20 // 全局变量%>
3.动作元素(运行指令)
ps:<jsp:include page=”” /> 上面的错了。
一. JSP工作原理:1.JSP存在的目的是为了能够让web页面的内容与形式分开,即把html编码和业务逻辑分离.通常JSP可以生成动态的html页面.业务逻辑交给Servlet和JavaBean或其他的程序来完成.JSP可以通过代码块来访问业务逻辑.2.JSP页面会生成servlet代码,服务器执行JSP程序过程如下查找JSP二. JSP页面的组成JSP中有两大类数据组成,一类是JSP标志;另一类是Html的代码.1.JSP标志有以下的几中:a)<%=expression>:计算表达式并输出结果.相当于到servlet类的service()方法中插入out.println(expression);b)<%!变量%>这时一个JSP变量的声明,可以在JSP的标志中使用.相当于向servlet类插入全局属性.声明的位置可以在JSP文件的任意位置.c)<%code%>;把这部分代码块插入到servlet类的service()方法中.d)<%@ page language="java" import="java.util.*" %>在page指令中,定义了JSP文件的全局属性.e)<%@ include file="relativeURL" %> relativeURL是本jsp所在的目录包含指令,向当前jsp页面中插入一个静态文件的内容.2.隐含的JSP对象变量:为了简化JSP表达式和Scriptlet的代码,JSP提供了8个预先定义的变量(或称为隐含对象)。
这些变量是request、response、out、session、application、config、pageContext和page。
和servlet一样,他们的生命周期是:Request , response , out , PageContext , page…………………>Application , config…………………………………………………………………>Session……………………………………………>1. application是一个ServletContext,也可以通过getServletConfig().getContext()获得。
MVC:JSP + servlet + javabeanJava:复习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 层进行职责解耦,用来简化日常开发。
Spring MVC 使用简单,学习成本低,很容易就写出性能优秀的程序。
目前越来越多的项目选择使用Spring MVC 作为其Web开发框架。
Hibernate:Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC 进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate 可以应用在任何使用JDBC 的场合,既可以在Java 的客户端程序使用,也可以在Servlet/JSP 的Web 应用中使用,最具革命意义的是,Hibernate 可以在应用EJB 的J2EE 架构中取代CMP,完成数据持久化的重任。
初级准备:JDK、Tomcat(Web服务器)、MySQL(数据库)、JDBC(连接数据库)、Eclipse(软件)、设置环境变量*Java:类,继承,实现,接口……Jsp内置对象:request 对象、response 对象、session对象**、application对象、outJDBC学习实例(先复习数据库):一:利用MySQL Workbench访问数据库,并且创建表。
1.新建一个数据库jsp_db,并且设为默认数据库(set as default schema)。
2.创建表代码:create table tbl_user(id int(11) unsigned not null auto_increment,name varchar(50) not null default'',password varchar(50) not null default'',email varchar(50) default'',primary key(id))engine=InnoDBdefault charset=utf8;create table tbl_address(id int(11) unsigned not null auto_increment,city varchar(50) not null default'',country varchar(50) not null default'',user_id int(11)unsigned not null, primary key(id))engine=InnoDB default charset=utf8;3.为表插入记录insert into tbl_user(id,name,password,email)values(1,'xiaoming','123456','xiaoming@'),(2,'xiaozhang','123456','xiaozhang@');insert into tbl_address(city,country,user_id) values ('beijing','china','1');insert into tbl_address(city,country,user_id)values ('tianjin','china','2');二:利用JDBC对数据库进行查询的操作。
1.将mysql-connector-java-5.1.25-bin.jar包。
拷贝到WEB_INF目录下的lib文件夹下。
2.进入属性页面,选择Java Build Path,进入Libraries标签页。
选择Add Jars。
找到刚才拷贝进来的jar包,选择ok。
既成功添加了JDBC的驱动程序。
3.创建一个类,在jdbc包下,命名为JDBCTest。
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;publicclass JDBCTest {publicstaticvoidmain(String[] args) {String sql="SELECT*FROM tbl_user";Connection conn=null;Statement st=null;ResultSet rs=null;try {Class.forName("com.mysql.jdbc.Driver); [注册mysql的jdbc的驱动程序]conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp_db","root","1234");【获取mysql数据库链接,mysql数据库的url,用户名,密码】st=conn.createStatement();rs=st.executeQuery(sql);while(rs.next()){System.out.print(rs.getInt("id")+" ");System.out.print(rs.getString("name")+" ");System.out.print(rs.getString("password")+" ");System.out.print(rs.getString("email")+" ");System.out.println();}} 【遍历数据库内容】catch (Exception e) { e.printStackTrace();}finally{try {rs.close();} catch (Exception e2) {}try {rs.close();} catch (Exception e3) {}try {rs.close();} catch (Exception e4) {}}}}【清理】三:利用JDBC对数据库进行插入更新以及删除工作1.插入:publicclass JDBCTest {publicstatic Connection getConnection(){Connection conn=null;try{Class.forName("com.mysql.jdbc.Driver");conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp_db","root","1234");}catch(Exception e){e.printStackTrace();}return conn;}【取得数据库连接】publicstaticvoidinsert(){Connection conn=getConnection();try {String sql="INSERT INTO tbl_user(name,password,email)"+"VALUES('Tom','123456','tom@')";Statement st=conn.createStatement();intcount=st.executeUpdate(sql);【插入操作】System.out.println("向用户表中插入了"+count+"条记录");conn.close();} catch (Exception e) {e.printStackTrace();}}publicstaticvoidmain(String[] args) {insert();}2.更新:String sql="UPDATE tbl_user SET email='tom@' WHERE name='Tom'";【将sql语句改成】3.删除:String sql="DELETE FROM tbl_user WHERE name='Tom'";4.事务处理:事务就是一个完整的数据库操作。