JSP基础
一、JSP的三种注释:1、显示注释:— 这个注释通过页面查看源代码中可以看见—>2、隐式注释1:Java的注释// 、/* */3、隐式注释2:本身的注释 --%>(只有一种显示注释,其他的是隐式注释)二、JSP中脚本小程序的三种形式:可以定义变量、编写语句 %>定义全局变量、编写方法、类 %>输出内容 %> 等价于 out.print(); 但最好使用形式更好。
一、JSP的三种注释:
1、显示注释:<!— 这个注释通过页面查看源代码中可以看见—>
2、隐式注释1:Java的注释// 、/* */
3、隐式注释2:<%-- JSP本身的注释 --%>
(只有一种显示注释,其他的是隐式注释)
二、JSP中脚本小程序的三种形式:
<% 可以定义变量、编写语句 %>
<%! 定义全局变量、编写方法、类 %>
<%= 输出内容 %> 等价于 out.print(); 但最好使用<%= %>形式更好。
三、常见出错的含义和解决方法:
404表示页面找不到出错,查看路径是否正确。
500表示服务器出错,必须查看代码进行处理。
四、page指令主要功能:设定整个JSP网页的属性和相关功能。
1、 设置MIME类型:包括html、world、xsl等类型。自己可以根据自己具体的需要来设置,例如可以应用于导出excel文档、world文档··· ··· <%@page contentType=” ”%> 所有的MIME类型从tomcat中的conf/web.xml文件中可以找到。 注意:contentType只能设置一次。
2、 导包指令:<%@page import=” ”%>
3、 其他指令:错误页、禁止session、页面的缓冲等等。
page指令语法格式如下:
<%@ page
[language=”java”]---------------------------------声明JSP页面使用的脚本语言类型,默认是java,所以通常不用配置
[import=”package.class,……”]---------------------包的导入,默认已经导入的有java.lang.*、javax.servlet.*、javax.servlet.jsp.*、javax.servlet.http.*
[contentType=”text/html”;charset=”GB3212”]------设置MINI类型,默认是text/html、设置字符编码,默认是ISO-8859-1
[session=”True|false”]----------------------------设置这个JSP页面是否需要HTTPSession,如果为true,那么产生的servlet将包含创建一个HTTP会话(或访问一个HTTP会话)的代码,缺省为true。
[buffer=”none|8kb|sizekb”]------------------------指定输出缓存区的大小,out用于缓存区的输出,默认是8KB
[autoFlush=”True|false”]--------------------------决定输出流的缓冲区是否要自动清除。当值为true时缓存满时将被自动刷新,当值为false时,缓冲区满会抛出溢出异常。缺省值为true。
[isThreadSafe=”True|false”]-----------------------此JSP页面能处理来自多个线程的同步请求,此值为true,否则为false,生成的servlet表明它实现了SingleThreadMode接口。SingleThreadMode已经声明不赞成使用(deprecate)
[info=”text”]-------------------------------------表示此JSP页面的相关信息,由getServletInfo()方法返回的
[errorPage=relativeURL]-----------------------------表示如果发生异常错误,网页会被重新指向一个URL页面。错误页面必须在其page指令元素中指定isErrorPage="true"
[isErrorPage=”True|false”]------------------------如果此页面被用作处理异常错误的页面,则为true。在这种情况下,页面可被指定为另一页面page指令元素中errorPage属性的取值。指定此属性为true将使exception隐含变量对此页面可用。缺省值为false。
[extends=”package.class”]-------------------------定义此JSP页面产生的Servlet是继承自哪个父类。必须为实现HttpJspPage接口的类。JSP规范对不完全理解其隐意的情况下使用此属性提出警告
%>
凡是出现“文件下载”提示时,肯定是MIME类型设置错误。
如果MIME改为world文档当然变成如下:
JSP连接Oracle数据库实例:
在Tomcat的common/lib中加入oracle中的驱动包。连接数据库,把雇员的全部信息列出来。
<%@page contentType="test/html;charset=GBK"%> <%@page import="java.sql.*"%> <%! public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ; public static final String DBURL = "jdbc:oracle:thin:@localhost:1521:MLDN" ; public static final String DBUSER = "scott" ; public static final String DBPASS = "tiger" ; %> <% Connection conn = null ; // 数据库连接 PreparedStatement pstmt = null ;// 数据库操作 ResultSet rs = null ; // 查询结果集 %> <% Class.forName(DBDRIVER) ; // 加载驱动程序 conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; String sql = "SELECT empno,ename,job,hiredate,sal,comm FROM emp" ; pstmt = conn.prepareStatement(sql) ; rs = pstmt.executeQuery() ; %> <center> <h1>雇员管理</h1> <table border="1" width="80%"> <tr> <td>雇员编号</td> <td>雇员姓名</td> <td>工作</td> <td>雇佣日期</td> <td>工资</td> <td>奖金</td> </tr> <% while(rs.next()){ int empno = rs.getInt(1) ; String ename = rs.getString(2) ; String job = rs.getString(3) ; java.util.Date hiredate = rs.getDate(4) ; float sal = rs.getFloat(5) ; float comm = rs.getFloat(6) ; %> <tr> <td><%=empno%></td> <td><%=ename%></td> <td><%=job%></td> <td><%=hiredate%></td> <td><%=sal%></td> <td><%=comm%></td> </tr> <% } %> <% rs.close() ; pstmt.close() ; conn.close() ; %> </table> </center> |
程序运行出现了错误如下:
以上错误是因为程序中缺少了Oracle驱动程序包,因为刚才我们在common/bin中增加了Oracle驱动包,而没有重启服务器。
此时,重启服务器即可。
重启运行结果如下:
五、include指令:功能:在JSP编译时插入包含一个文件。包含的过程是静态的,包含的文件可以是JSP、HTML、文本或是Java程序。
*静态包含指令@include指令<%@include file="relativeURLSpec"%>
*动态包含指令<jsp:include>指令
1、静态@include指令是属于静态包含,先包含进来再处理,可以包含任意的文件(html、txt、pdf等等文件都可以),当然只是把文件的内容包含进来。
content.html页面文件代码:
<h2>content.html</h2> |
content.txt文件代码:
<h2>content.txt</h2> |
content.inc文件代码
<h2>content.inc</h2> |
Include.jsp中把以上三个文件静态包含进来,代码如下:
<h2>include.jsp</h2> <%@include file=”content.html”%> <%@include file=”content.txt”%> |
运行结果如下:
2、动态jsp:include指令
此语句为动态包含,如果被包含的页面是JSP,则先处理后再包含,而如果包含的是非*.jsp文件,侧只是把文件的内容静态包含进来(功能与@include类似)
此指令在使用的时候语法非常严格,有一下两种形式的语法:
语法一:
<jsp:include page=”页面”/>
语法二:
<jsp:include page=”页面”/>
<jsp:param name=”参数名称” value=”参数值”/>
········· //可以写多个
</jsp:include>
如果被包含的页面是动态的页面的话,处理可以包含之外,还可以向被包含的页面里面传递参数。
范例:
建立content.jsp文件,此文件是被包含文件,可以接受 ref1、ref2参数。
<h2><%=request.getParameter("ref1")%></h2> <h2><%=request.getParameter("ref2")%></h2> <h2><%=request.getParameter("ref2")%></h2> |
以上文件接受了被包含页面传递过来的两个参数,然后再被被包含页面包含了
建立includedemo.jsp,同时向content.jsp文件中传递ref1、ref2参数
<h2>includedemo.jsp</h2> <jsp:incluce page=”content.jsp”> <jsp:param name=”ref1” value=”HELLO WORLD”/> <jsp:param name=”ref2” value=”www.mldn.cn”/> </jsp:include> |
运行效果如下:
当然,也可以向包含页面中传递变量。
范例:建立includedemo.jsp
<h1>includedemo04.jsp</h1> <%! public static final String str = "www.jtlyuan.iteye" ; %> <jsp:include page="content.jsp"> <jsp:param name="ref1" value="HELLO WORLD"/> <jsp:param name="ref2" value="<%=str%>"/> </jsp:include> |
以后,凡是要向页面中传递变量的话,则肯定采用以上的形式。
运行结果如下:
两种包含的区别:
先看如下代码示例,demo.jsp
<%@ page contentType="text/html;charset=GBK"%> <% int i = 1000 ; %> <h2>demo.jsp中的i的值为<%=i%></h2> |
测试静态include的代码
<%@ page contentType="text/html;charset=GBK"%> <h1>includedemo06.jsp</h1> <% int i = 10 ; %> <h2>includedemo06.jsp中的i的值为<%=i%></h2> <%@include file="demo.jsp"%> |
呵呵,重复定义变量i了,这是为什么呢?因为静态包含是将全部内容包含进来以后,再一起处理的。
测试动态包含:代码
<%@ page contentType="text/html;charset=GBK"%> <h1>includedemo06.jsp</h1> <% int i = 10 ; %> <h2>includedemo06.jsp中的i的值为<%=i%></h2> <jsp:include page="demo.jsp"></jsp:include> |
运行结果:
发现,利用动态包含可以正确显示,而却不会互相影响,这是因为动态包含是先各自处理完成后,再包含进来的。
所以,明显动态include更加常用。
六、forward标签指令:
该指令的形式与include很相似
Forward跳转指令,当一执行打指令的时候,程序就会无条件立刻跳转,语法如下:
语法一:
<jsp:forward page=”要跳转到的页面”/> |
<jsp:forward page=”要跳转到的页面”> <jsp:param ame=”参数名称” value=”参数值”/> ········· //可以写多个参数列表 </jsp:forward> |
范例:完成跳转功能
forwarddemo01.jsp代码
<%@ page contentType="texcharset=GBK"%> <jsp:forward page="forwarddemo02.jsp"/> |
forwarddeom.jsp代码
<%@ page contentType="text/html;charset=GBK"%> <h2>跳转之后的页面!</h2> |
结果得到:
结果已经成功跳转,但是地址却没有变化,这是为什么呢??原来,forward这种跳转是服务器端的跳转,地址是不会改变的。
当然,也可以和include动态指令一样,我们可以向跳转页面传递参数。使用request.getParameter()进行接收。
Forward03.jsp代码如下
<%@ page contentType="text/html;charset=GBK"%> <%! public String str="www.jtlyuan.iteye.com"; %> <jsp:forward page="content.jsp"> <jsp:param name="ref1" value="HELLO WORLD"/> <jsp:param name="ref2" value="<%=str %>"/> </jsp:forward> |
跳转到的页面forwarddemo04.jsp代码:
<%@ page contentType="text/html;charset=GBK"%> <h2>跳转之后的页面!</h2> <h2><%=request.getParameter("ref1")%></h2> <h2><%=request.getParameter("ref2")%></h2> |
结果如下:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)