信息发布软件,b2b软件,广告发布软件
标题:
JSP scriptlet网页中注定不可以分割方法二者可以兼容不错
[打印本页]
作者:
信息发布软件
时间:
2017-6-30 23:02
标题:
JSP scriptlet网页中注定不可以分割方法二者可以兼容不错
我下午就感觉怪了,老师忽然不写 <% 改用 <jsp:scriptlet> 当时没去多想 他说为了格式更好一点
我今晚在家在 myeclipse7.0 怎么打怎么没有 以为是下午他刚讲的 EL表达式 结果不是
想想会不会是 下午另讲的 JSTL 也不是 但是 页面打不出来 是怎么回事啊
<jsp:scriptlet> 这个我记得有啊
希望大家讲解一下 <jsp:scriptlet> 这是什么 我晕死了
在网上找了好久 好像也没有这种表达方法 但myeclipse中好像也有一些 <jsp:userbean>
难道这些都是 一样的 不过我很纳闷 <jsp:scriptlet> 为什么没有
在前面的教程中我们已经在一个scriptlet中使用了“out”变量来产生HTML输出。对于更复杂的HTML,如果我们还是使用“out”变量那就会失去JSP编程的许多优势。其实我们可以很简单地就实现Scriptlets 和 HTML的混合。
假如你要在HTML产生一个表格。产生表格是一个普通的操作,在实践中你可能想从一个SQL表格或者从文件的行产生一个表格。为了是所举的例子尽量的简单,我们产生一个表格,使这个表格包含从1到N的数字。虽然以下的例子不是很有用,但是你从中可以学到一些技巧的。以下就是JSP的程序片段:
<TABLE BORDER=2>
<%
for ( int i = 0; i < n; i++ ) {
%>
<TR>
<TD>Number</TD>
<TD><%= i+1 %></TD>
</TR>
<%
}
%>
</TABLE>
在编制代码之前,你应该首先定义一个整型(int)变量“n”,利用这个变量我们要输出“n”行的表格。从上面的代码中我们可以注意到%> 和 <%字符出现在“for”循环中,原来这是为了使你退到HTML然后又回到scriptlet,其实这正是Scriptlets 和 HTML的混合的技巧。
上面的代码其实很简单:可以退出scriptlet的时候,就编写HTML;然后又回到scriptlet中去。任何的循环控制表达式,比如“while”或者“for”循环以及“if”语句都可以控制HTML。如果HTML处在一个循环中它就会在每一次的循环中执行一次。
JSP简单的说就是HTML+Java代码,文件后缀为.jsp的文件。
JSP和Servlet是JavaEE的重要基础,看起来JSP和Servlet是两个完全不同的东西,但是JSP其实就是Servlet的一种形式,JSP最终需要被编译成Servlet;
JSP页面必须部署到web容器中才能够访问,因为单单的JSP页面时没有用处的;必须要转换成Servlet才能够使用;
JSP是面向对象的,因为最后会变成Servlet,而Servlet是一个类,这个可能不好理解,下面会有讲解.
而用户访问JSP页面看到的输出时Servlet输出流的结果;
JSP可以不处理异常,因为如果产生异常有两种处理方法:
1.在浏览器页面显示;
2.跳转到errorPage;
JSP到Servlet的转换
当第一次访问某个JSP文件时,web服务器会将JSP文件转换成Servlet,再由Servlet提供输出流将HTML输出给客户.因此客户接触的只是HTML而已,而JSP的处理过程都是在服务器完成的;
注意:每个Servlet类的对象在容器中只有一个,因此每个客户访问的同一个JSP页面都是一个Servlet对象;
假设有null.jsp文件,此文件内容为空,如下所示:
[html] view plain copy
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8" info="This is a JSP " %>
<html>
<body>
</body>
</html>
在tomcat的work目录中会生成null_jsp.java和null_jsp.class,null_jsp.java的代码如下:
[java] view plain copy
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
//HttpJspBase是Servlet的子类
/*
此类主要有三个方法组成:
1.init(); 初始化
2.destroy(): 销毁
3.service(); 接收客户端请求并处理
*/
public final class null_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
public String getServletInfo() {
return "This is a JSP ";
}
private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();
private static java.util.List<String> _jspx_dependants;
private javax.el.ExpressionFactory _el_expressionfactory;
private org.apache.tomcat.InstanceManager _jsp_instancemanager;
public java.util.List<String> getDependants() {
return _jspx_dependants;
}
public void _jspInit() {
_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
}
public void _jspDestroy() {
}
public void _jspService(final HttpServletRequest request, final HttpServletResponse response)
throws java.io.IOException, ServletException {
//生成JSP内置对象
final PageContext pageContext;
HttpSession session = null;
final ServletContext application;
final ServletConfig config;
JspWriter out = null;
final Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;
try {
response.setContentType("text/html;charset=utf-8");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
//输出JSP页面中的显示
out.write("\r\n");
out.write("<html>\r\n");
out.write("\t<body>\r\n");
out.write("\r\n");
out.write("\t</body>\r\n");
out.write("</html>");
} catch (Throwable t) {
if (!(t instanceof SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try { out.clearBuffer(); } catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}
从以上代码就可以很清晰地看出JSP和Servlet的关系了,JSP编写的<%%> <%=%> 和 html代码都是在Service函数中实现;
而<%! %>中的代码作为Servlet类的成员变量和成员方法;
JSP内置对象就是在这个文件中被创建的。
作者:
qingling520
时间:
2017-7-5 05:01
慢学~
作者:
zzjiuzi008
时间:
2017-7-8 03:15
序员哥哥好有耐心!点赞!
作者:
枯干枯干
时间:
2017-7-11 19:08
行简直是好再也不用花冤枉钱了
作者:
w8899
时间:
2017-7-12 22:13
好非常耐心,技术员静静也很好,长期合作哦~
作者:
chenxue2015
时间:
2017-7-13 02:39
用了这么久才来评价的,服务不错,软件也不错,很容易上手。而且,他们售后很好,不清楚的地方都会在第一时间给解答。全五分,值得推荐。
作者:
huangge
时间:
2017-7-16 00:43
有机会继续合作!
作者:
anleeycn
时间:
2017-7-19 08:24
有耐心的解答我所有的问题,在这特别感谢,谢谢!很好的卖家,服务态度好,价格合理,每个描述都很细致,对我们新手来说,已经给予了很大的帮助,非常感谢,以后还会来的!
作者:
huanyili998
时间:
2017-7-19 21:34
卖家发货快
作者:
pxynmi018
时间:
2017-7-22 20:12
错,我很满意,不错,卖家很有耐心,服务态度好
作者:
huangge
时间:
2017-7-24 21:22
东西从来不给评论的懒得打字。但是实在太谢谢技术部那孩子了,业界良心,给你点个赞。
作者:
asz111
时间:
2017-7-24 22:24
快,水平也不错。好评
作者:
yirenzhuang
时间:
2017-7-25 02:29
非常周到耐心,满意好评
作者:
meili1
时间:
2017-7-28 01:44
特别满意,很细心很周到的为我司考虑设计方案,耐心的一点点修改。我之前的网站就是077号做的,这次添加搜索栏也是找的她以后还要找她~
作者:
jiandao1
时间:
2017-7-28 13:39
家可以看看效果
作者:
zzjiuzi008
时间:
2017-7-28 16:20
。。。。。。。。很好。。。。。。。。。
欢迎光临 信息发布软件,b2b软件,广告发布软件 (http://postbbs.com/)
Powered by Discuz! X3.2