朋友的公司在一个项目中要用到jsp,要求他尽快掌握jsp,可是又不知道怎么入手.所以特来向我请教.我说:无他,概念要清晰耳.于是我把我在编程中经常要要用到的概念整理出来,让他熟悉.一个月后,这家伙在这个项目中担当了很多重要的task
1.什么是jsp?
在传统网页中加入java程序片断和jsp标记就构成了jsp网页。
2.在MVC模式中,jsp、javabean和servlet之间有何关系?
我发现很多人在提这个问题时,都喜欢说jsp、javabean和servlet之间有何关系,如果没有在MVC模式中这个条件的话,这个问题还真不好回答,但是在MVC模式中,servlet扮演了一个控制者的角色,并负责响应客户请求;javabean进行业务逻辑处理;jsp只负责输出HTML网页显示的部份.
3.jsp文件的编写
一个复杂一点的jsp页面可能会包括如下一些常用的jsp指令:
引用
<%@ page contentType="text/html;charset=gbk"%>
<!--定义程序所要输出的字符集-->
<%@page import="java.sql.*"%>
<!--<%@ page %>是JSP语法的指令,import是<%@ page %>的属性,和java中import关键字意思一样,没有区别。-->
<%@ taglib uri="http://struts-menu.sf.net/tag-el" prefix="menu" %>
<!--<%@ taglib %>是JSP语法的指令,taglib指令说明需要在jsp页面中引入标签库,uri是指标签库所在的位置,prefix是指在jsp中引用标签库时指定的前缀-->
<jsp:useBean id="userBean" class="com.userBean" scope="request"/>
<!--实例化一个JavaBean,取名为userBean-->
<html>
<head><title>A Comment Test</title></head>
<body>
<!--正文内容略-->
</body>
</html>
4.javabean在jsp中的声明和使用
<jsp:usebean>指令表示用来在JSP页面中创建一个BEAN实例。在<jsp:usebean>指令中定义了几个属性:
id:定义了生成的bean组件的名字
scope:定义了bena的活动范围,取值如下:page(表示当前页有效) | request(表示这次请求有效) | session(表示这次会话有效) | application(表示在应用程序的生命周期有效).
class:说明了bean的类文件的名称
5.标签库的配置
上面提到的标签库的uri为什么看上去像网址呢.当你自己不在WEB应用项目中定义特殊的命名空间的时候,uri位置来自可下载taglib的位置。如果你在web.xml里面定义了自己的命名空间名称,而且也在JSP中使用了,那么容器使用你的名称空间去定位相应的TAG定义.以Struts标签库为例:
1)若Web工程没有使用Struts的标签库,可以不在web.xml中使用Struts的标签库信息。
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/struts-htm" prefix="html"%>
<%@ taglib uri="http://jakarta.apache.org/struts/struts-logic" prefix="logic"%>
<%@ taglib uri="http://jakarta.apache.org/struts/struts-nested" prefix="nested"%>
2)在web工程中定义了Struts的标签库,而且标签库放到了web工程中的WEB-INF目录下
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested"%>
在web工程中进行配置的的好处是因为可以在Struts中配置为tld文件配置一个简要的名称或者更加易懂的名称,例如在web.xml文件中增加如下配置:
引用
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-nested</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
6.jsp脚本元素
脚本元素包含三部分:声明(Declarations)、Scriptlets、表达式(Expressions)
1)声明(Declarations)
功能:在JSP程序中声明变量、实例和类。声明是以<%! 为起始;%> 为结尾。
语法:<%! code %>
2)Scriptlets
功能:Scriptlet 中可以包含有效的程序片段,只要是合乎Java本身的标准语法即可。Scriptlet 是以 <% 为起始;%> 为结尾。
语法:<% code fragment %>
3)表达式(Expressions)
功能:JSP提供了一种简单方法访问可用的Java变量或Java表达式,并生成页面HTML字符串。Expressions标签是以 <%= 为起始;%> 为结尾,其中间内容包含一段合法的Java的表达式。
语法:<%= expression %>
7.jsp中"预定义变量"的使用
为了简化JSP表达式和scriptlets中的代码,要求对jsp中"预定义变量"进行熟练使用。它们是:request,response,out,session
1)request
与request相联系的是HttpServletRequest类,使您可以得到request的参数(通过getParameter方法),request 的类型(GET,POST,HEAD,等等),和引入的HTTP头(cookies,Referer,等等)。严格来说,request是类ServletRequest的一个子类而不是HttpServletRequest类的,事实上,如果request的协议不是HTTP,那麽它几乎不会工作。
2)response
对客户端的response与HttpServletResponse 相连。请注意,因为输出流是放入缓冲的,所以可以设置HTTP状态码和response头,尽管在标准的servlets中不允许将之发送到客户端。
3)out
这里使用PrintWriter类来发送输出到客户端。然而,为了使response对象有效,可使用一个PrintWrite类的使用缓冲的版本JspWriter。使用session的属性page directive,您可以自己定义缓冲的大小,甚至可以在使用了buffer属性后关闭缓冲。也请注意,out仅用于scriptlets之中,因为JSP表达式自动的放入输出流,所以极少需要明确的声明out。
4)session
应用与request相联系的HttpSession类。因为session是自动创建的,即使没有一个引入的session,这种变量仍可绑定。有一个例外是,如果您用page directive关闭session,再试图使用session时将导致错误(在JSP页面向servlet转换时)。
分享到:
相关推荐
【个人信息管理系统】是一种基于JSP技术的Web应用,主要用于个人数据的管理和组织。该系统涵盖了多个功能...这个系统不仅锻炼了开发者在JSP编程、数据库设计和系统架构方面的技能,也为用户提供了便捷的信息管理工具。
这个项目旨在提供一个用户友好的界面,让用户能够进行互动交流,记录个人生活点滴,以及可能的其他功能。 首先,JSP是Java平台上的一种动态网页技术,它允许开发人员在HTML页面中嵌入Java代码,从而实现服务器端的...
随着互联网技术的发展和个人对于网络空间需求的增长,越来越多的人希望拥有自己的网站来展示个人作品、分享生活点滴或开展小型业务。在这种背景下,基于JSP的个人网站管理系统应运而生。JSP是一种基于Java的技术,...
作者可能会分享在解决复杂问题时如何巧妙运用这些概念,以及在深夜编程时的点滴感悟。 书中可能涵盖了Java开发中的各种场景,例如Web应用开发、服务器端编程、大数据处理等。读者可以从中了解到Servlet、JSP、...
动态发布功能允许用户发表文字、图片或链接,与朋友们分享生活点滴。好友系统则帮助用户建立联系,实现私信聊天和互动。评论功能让其他用户可以对动态进行回应,增强社区的互动性。 JSP项目通常需要结合Servlet和...
【个人博客管理系统】是一种基于PHP和SQL技术构建的在线平台,专为个人用户提供发布、管理与分享自己思想、见解和生活点滴的工具。这个系统来源于《PHP开发实战宝典》一书中的实例,旨在帮助读者深入理解PHP编程语言...
通过对这个项目的深入学习,开发者不仅可以提升Java编程技能,还能理解Web应用开发的整体流程,为日后的项目开发积累经验。同时,提供的源代码、数据库和辅导视频为自主学习和实践提供了便利,对于提高个人技术水平...
这款应用的设计理念是将日常生活中的点滴记忆、重要事件以及未来的规划整合在一个便捷的平台上,从而帮助用户更好地组织和回忆他们的生活。 首先,让我们深入了解一下Java和jsp在"LifeCalendar"中的作用。Java是一...
- **JSP标签库**:可能使用了JSTL(JavaServer Pages Standard Tag Library)或其他自定义标签库,简化JSP页面的编程,提高代码可读性和复用性。 - **MVC(Model-View-Controller)**:一种常见的软件设计模式,在...
2. **日志记录和发布**:用户可以发表生活感想和记录生活点滴,这涉及到用户界面设计、数据库操作(如MySQL)和JDBC连接,以及后端服务处理用户的输入和保存到数据库中。 3. **阅读和分享**:用户可以查看他人的...
此项目旨在实现用户发布动态、分享照片、评论互动等功能,为校友们提供一个交流和分享生活点滴的在线平台。 【主要知识点】: 1. **Java SSM框架**: - **Spring**:这是一个全面的Java应用框架,提供了依赖注入...
可能是对Java编程语言的理解,特定问题的解决方案,或者是项目开发过程中的点滴。这些笔记可能涵盖了基础知识,进阶概念,甚至可能是特定框架或库的使用经验。 【标签】:“Java”标识了这个笔记的内容是关于Java...
- 使用JSP和Servlet等Java Web开发技术实现前端页面展示和后端逻辑处理。 - 针对不同的功能模块,设计相应的类和方法,确保代码的重用性和可读性。 #### 五、系统实现 - 在开发过程中,遵循良好的编程习惯,注重...
信息安全从业人员的成长与学习是一个不断迭代和进步的过程,2018年年刊《信安之路》记录了从业人员在信息安全领域中的成长点滴,涵盖从学习、总结、分享、拓展到交流的各个方面。本文将围绕《信安之路》2018年年刊的...
通过研究Tomcat源码,开发者可以学习到Web服务器的设计原则,理解Servlet容器的工作机制,掌握JSP和EL的编译过程,以及网络通信和多线程编程的相关知识。此外,对于那些需要对Tomcat进行性能优化、安全性增强或功能...
《免费的CS: FreeCS》是一款基于J2EE平台、使用Java编程语言开发的网络游戏,其设计灵感来源于经典的《Counter-Strike》(反恐精英)。这款游戏的出现,为喜爱CS的玩家提供了一个无需付费即可享受游戏体验的选择。...
以下是对Java基础知识、开发工具、以及应用平台的一些深入理解和经验分享。 #### JDK(Java Development Kit):Java的核心组件 JDK是Java开发的核心工具包,包含了编译、运行Java程序所需的所有工具。它不仅包括...
Servlet是一种Java编程接口,允许开发者创建动态、交互式的Web内容。JSP则是一种基于HTML的模板语言,结合了Java代码,允许开发者在页面上嵌入动态内容,如数据库查询结果或用户输入的处理。 安装和配置Apache ...