ITKeyword,专注技术干货聚合推荐

注册 | 登录

【Java.Web】JSP —— HTML, Servlet,JSP比较, JSP基础

robinjwong 分享于 2014-10-03

推荐:java web -- jsp 和 servlet 线程安全

最近看了一些JAVA WEB开发部分,发现JSP和Servlet需要注意线程安全,以前玩过PHP,知道犹豫PHP的运行方式,所以PHP每个页面每次访问都是独立的,所以不用考虑线

2020腾讯云共同战“疫”,助力复工(优惠前所未有!4核8G,5M带宽 1684元/3年),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1053

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

HTML V.S. Servlet V.S. JSP 静态HTML文件,Servlet和JSP都能向客户端返回HTML页面。 静态HTML文件 当浏览器请求访问http://localhost:8080/base-webapp/index.html时,Web服务器会读取本地文件系统中的index.html文件中的数据,把它作为请求正文发送给浏览器: html文件事先已经存在于文件系统中,每次客户端请求访问该文件,客户端得到的都是同样的内容。 Servlet动态生成HTML页面 使用Servlet可以动态生成HTML文档: 但是开发人员必须编写JAVA程序代码的方式来生成HTML文档(通过PrintWriter对象来一行一行打印HTML文档的内容),编程工作繁琐。 JSP动态生成HTML页面 静态HTML文件和Servlet各有优缺点,JSP吸取两者的优点并摒弃二者的缺点。 在传统的HTML文件(*.htm, *.html)中加入Java程序片段和JSP标记,就构成了JSP文件。 JSP基础 一个简单的例子 在base-webapp中添加一个jsp文件: <%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>JSP Example</title></head><body>

Hello <%= request.getParameter("username") %></body></html> 在浏览器中访问如下URL: http://localhost:8080/base-webapp/jsp/example.jsp?username=jsp user 浏览器页面如下: JSP基础 JSP文件的翻译和编译 浏览器请求访问jsp文件,当servlet容器接收到客户端请求访问特定JSP文件请求的时候,容器按照以下流程来处理客户请求: 查找JSP文件对应的Servlet,如果已经存在,就调用它的服务方法 如果与JSP文件对应的Servlet类还不存在,就解析文件系统中的JSP文件,把它翻译成Servlet源文件,接着把Servlet源文件编译成Servlet类,然后再初始化并运行Servlet 在一般情况下,把JSP文件翻译成Servlet源文件并编译Servlet源文件的过程仅在客户端首次调用JSP文件时发生: 在Web应用处于运行时的情况下,如果原始的JSP文件被更新,多数Servlet容器能检测到所做的更新,继而自动生成新的Servlet源文件并进行编译,然后再运行所生成的Servlet。 JSP生成的Servlet源文件及class文件 —— tomcat tomcat把JSP生成的Servlet源文件和类文件放于<tomcat安装目录>/work目录下,可手工删除文件。 查看work目录下,example.jsp文件对应的Servlet源文件和类文件分别为: JSP类的继承体系 查看生成的Servlet类文件:example_jsp.java(最后) 与JSP文件对应的Servlet类继承了org.apache.jasper.runtime.HttpJspBase类,HttpJspBase类由Tomcat提供,它实现了JSP API中的javax.servlet.jsp.HttpJspPage接口,该接口继承了javax.servlet.jsp.JspPage接口,而JspPage接口又继承了Servlet API中的javax.servlet.Servlet接口: 从Servlet容器处理JSP的过程可以看出,JSP虽然形式上想HTML文件,但其本质上是Servlet。JSP可以访问Servlet API中的接口和类,此外,JSP还可以访问JSP API中的接口和类,JSP API主要位于javax.servlet.jsp包中。 package org.apache.jsp.jsp;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.jsp.*;public final class example_jsp extends org.apache.jasper.runtime.HttpJspBase

implements org.apache.jasper.runtime.JspSourceDependent {

private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();

private static java.util.List _jspx_dependants;

private javax.el.ExpressionFactory _el_expressionfactory;

private org.apache.AnnotationProcessor _jsp_annotationprocessor;

public Object get

推荐:java web 学习总结之 Servlet/JSP 编码问题

Servlet和JSP编码问题

字节流:

1.得到OutputStream

字节流

OutputStream os = response.getOutputStream();

用默认编码输出数据,就是本地编码GBK

os.

Dependants() {

return _jspx_dependants;

}

public void _jspInit() {

_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();

_jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());

}

public void _jspDestroy() {

}

public void _jspService(HttpServletRequest request, HttpServletResponse response)

throws java.io.IOException, ServletException {

PageContext pageContext = null;

HttpSession session = null;

ServletContext application = null;

ServletConfig config = null;

JspWriter out = null;

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;

out.write("\n");

out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n");

out.write("<html>\n");

out.write("<head>\n");

out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n");

out.write("<title>JSP Example</title>\n");

out.write("</head>\n");

out.write("<body>\n");

out.write("

Hello ");

out.print( request.getParameter("username") );

out.write("\n");

out.write("</body>\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);

else log(t.getMessage(), t);

}

} finally {

_jspxFactory.releasePageContext(_jspx_page_context);

}

}} JSP的使用 通常,JSP负责动态生成HTML文档,而业务逻辑由其他可重用的组件,如JavaBean或其他Java程序来实现,JSP通过Java程序片段来访问这些业务组件:

推荐:Java Servlet和JSP教程

 http://www.bccn.net/article/web/jsp/jc/200409/72.html 简介      这是一个比较完整的Servlet、JSP教程,包含大量的实用资料和示例,仙人掌工作室倾情推荐。

HTML V.S. Servlet V.S. JSP 静态HTML文件,Servlet和JSP都能向客户端返回HTML页面。 静态HTML文件 当浏览器请求访问http://localhost:8080/base-webapp/index.html时,Web服务器会读取本地文件

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。