jsp学习笔记
- 格式:doc
- 大小:9.50 KB
- 文档页数:1


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与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学习日志(二)1.这句一定不要忘记了最后面的那个: "/" 否则的话会出现: "org.apache.jasper.JasperException: /b.jsp(5,39) The<jsp:param tag can only have jsp:attribute in its body." 的错误;错误: <jsp:param name="computer" value="20">正确: <jsp:param name="computer" value="20" />这就是jsp的param的属性param 标签就是用来传递数据的2.在接收数据后, 要将这个数据转换为int型的语句不要忘记了其中的integer要大写字母I ; parseInt中的i也要大写;错误: int n=integer.parseint(str);int n=Integer.parseint(str);int n=integer.parseInt(str);正确: int n=Integer.parseInt(str);3.有点儿疑问的是<jsp:include page="c.jsp"><jsp:param name="computer" value="200" /></jsp:include>这段代码居然直接向c.jsp提交了computer 的确200的值; 不像asp中的向另一页面的时候必须用submit提交才可以提交的这时居然....4.今天学了jsp的四个指令标签:<jsp:include page=""></jsp:include><jsp:param name="" value="" /><jsp:forward page="" /><jsp:plugin type="" jreversion="" width="" height=""></jsp:plugin>这四个标签的用法:include : 动态包含param : 提交数据forward: 页面转向plugin : 插件安装-----------------------------------------------2007.9.19----------张笑宇------------------。
JSP技术通过以上的案例发现Servlet做为一个动态网页开发技术太不靠谱。
尤其是需要编写一个页面的时候,需要指定页面的模板标签、还要处理很多的业务逻辑。
因此比较繁琐。
思考:Servlet为什么写一个页面那么吃力?主要的原因在于Servlet实在java中写标签。
鉴于以上的原因那么SUN提供了动态网页开发技术之JSP。
JSP即Java Server Page。
可见JSP本身是页面,那么在页面那种编写HTML标签应该非常轻松。
◆JSP体验<body>system date: <%=new java.util.Date() %></body>总结:1.servlet就是在java中写html比较烦,servlet是做获取参数并请求转发。
2.jsp就是html中写java比较烦,jsp主要是显示数据。
JSP运行原理JSP本质是一个Servlet只不过这个Servlet更加善于编写页面。
JSP语法学习JSP应该从以下几个方面学习:◆JSP模板元素JSP是在HTML中写java代码,那么JSP中最基本的是HTML元素。
我们将这些元素称之为JSP的模板元素。
◆JSP输出表达式JSP表达式主要用于输出变量以及输出表达式。
语法:<%= 表达式%>表达式后面不能有分号。
举例1:输出一个表达式。
2>1 = <%= 2>1 %><br/><%=page %><br/>运行结果2>1 = trueorg.apache.jsp.index_jsp@1135cd9总结:所有的JSP页面中的输出表达式会被翻译在java类中的_jspService()并使用out.write()方法进行了封装。
该输出表达式还可以输出变量,但是当前需要先定义一个变量。
JSP脚本JSP脚本主要用于定义局部变量和编写JAVA业务代码。
语法:<% JAVA代码%>举例1:使用JSP脚本定义变量。