`
mfcai
  • 浏览: 410043 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jsp编程经验点滴

阅读更多
朋友的公司在一个项目中要用到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转换时)。

3
1
分享到:
评论
4 楼 mfcai 2008-09-28  
gao_20022002 写道

纯粹的JSP学习,干嘛要附带struts?

标签库技术是jsp技术很重要的组成部分.
struts标签库是最常用的,所以这里以struts标签库为例
3 楼 mfcai 2008-09-28  
与你同在 写道

呵呵 就这样一个月就成高手了么?

当然不是,这里的高手是指在一个项目中能承担一定的task.
我那位朋友也是有两年多的开发经验,而且悟性也比较高.
如果是没有经验的普通程序员来说,是没有那么快的
2 楼 gao_20022002 2008-09-28  
纯粹的JSP学习,干嘛要附带struts?
1 楼 与你同在 2008-09-28  
呵呵 就这样一个月就成高手了么?

相关推荐

    JSP课程设计之个人信息管理系统

    【个人信息管理系统】是一种基于JSP技术的Web应用,主要用于个人数据的管理和组织。该系统涵盖了多个功能...这个系统不仅锻炼了开发者在JSP编程、数据库设计和系统架构方面的技能,也为用户提供了便捷的信息管理工具。

    温馨小屋个人网站JSP+JAVA+SELVERT

    这个项目旨在提供一个用户友好的界面,让用户能够进行互动交流,记录个人生活点滴,以及可能的其他功能。 首先,JSP是Java平台上的一种动态网页技术,它允许开发人员在HTML页面中嵌入Java代码,从而实现服务器端的...

    基于jsp的个人网站管理系统源码数据库.doc

    随着互联网技术的发展和个人对于网络空间需求的增长,越来越多的人希望拥有自己的网站来展示个人作品、分享生活点滴或开展小型业务。在这种背景下,基于JSP的个人网站管理系统应运而生。JSP是一种基于Java的技术,...

    Java夜未眠<励志篇>

    作者可能会分享在解决复杂问题时如何巧妙运用这些概念,以及在深夜编程时的点滴感悟。 书中可能涵盖了Java开发中的各种场景,例如Web应用开发、服务器端编程、大数据处理等。读者可以从中了解到Servlet、JSP、...

    滑稽空间项目

    动态发布功能允许用户发表文字、图片或链接,与朋友们分享生活点滴。好友系统则帮助用户建立联系,实现私信聊天和互动。评论功能让其他用户可以对动态进行回应,增强社区的互动性。 JSP项目通常需要结合Servlet和...

    个人博客管理系统

    【个人博客管理系统】是一种基于PHP和SQL技术构建的在线平台,专为个人用户提供发布、管理与分享自己思想、见解和生活点滴的工具。这个系统来源于《PHP开发实战宝典》一书中的实例,旨在帮助读者深入理解PHP编程语言...

    基于java的个人日记本系统设计与实现(源代码+数据库+辅导视频).zip

    通过对这个项目的深入学习,开发者不仅可以提升Java编程技能,还能理解Web应用开发的整体流程,为日后的项目开发积累经验。同时,提供的源代码、数据库和辅导视频为自主学习和实践提供了便利,对于提高个人技术水平...

    LifeCalendar

    这款应用的设计理念是将日常生活中的点滴记忆、重要事件以及未来的规划整合在一个便捷的平台上,从而帮助用户更好地组织和回忆他们的生活。 首先,让我们深入了解一下Java和jsp在"LifeCalendar"中的作用。Java是一...

    清爽型夏日九宫格日记网+sql server

    - **JSP标签库**:可能使用了JSTL(JavaServer Pages Standard Tag Library)或其他自定义标签库,简化JSP页面的编程,提高代码可读性和复用性。 - **MVC(Model-View-Controller)**:一种常见的软件设计模式,在...

    基于Java的博客管理系统的设计与实现样本.doc

    它不仅是个人记录生活点滴、分享知识与经验的平台,更是企业宣传产品和品牌的工具。然而,现有的博客系统往往缺乏个性化服务和功能的完善性,无法满足用户日益增长的需求。因此,本论文提出的《基于Java的博客管理...

    javaweb课程设计源码.md.zip

    2. **日志记录和发布**:用户可以发表生活感想和记录生活点滴,这涉及到用户界面设计、数据库操作(如MySQL)和JDBC连接,以及后端服务处理用户的输入和保存到数据库中。 3. **阅读和分享**:用户可以查看他人的...

    校友网类似qq空间

    此项目旨在实现用户发布动态、分享照片、评论互动等功能,为校友们提供一个交流和分享生活点滴的在线平台。 【主要知识点】: 1. **Java SSM框架**: - **Spring**:这是一个全面的Java应用框架,提供了依赖注入...

    note

    可能是对Java编程语言的理解,特定问题的解决方案,或者是项目开发过程中的点滴。这些笔记可能涵盖了基础知识,进阶概念,甚至可能是特定框架或库的使用经验。 【标签】:“Java”标识了这个笔记的内容是关于Java...

    个人信息管理系统文档内附源码

    - 使用JSP和Servlet等Java Web开发技术实现前端页面展示和后端逻辑处理。 - 针对不同的功能模块,设计相应的类和方法,确保代码的重用性和可读性。 #### 五、系统实现 - 在开发过程中,遵循良好的编程习惯,注重...

    信安之路 2018 年年刊.pdf

    信息安全从业人员的成长与学习是一个不断迭代和进步的过程,2018年年刊《信安之路》记录了从业人员在信息安全领域中的成长点滴,涵盖从学习、总结、分享、拓展到交流的各个方面。本文将围绕《信安之路》2018年年刊的...

    tomcat源码及依赖包(8)

    通过研究Tomcat源码,开发者可以学习到Web服务器的设计原则,理解Servlet容器的工作机制,掌握JSP和EL的编译过程,以及网络通信和多线程编程的相关知识。此外,对于那些需要对Tomcat进行性能优化、安全性增强或功能...

    免费的cs freecs

    《免费的CS: FreeCS》是一款基于J2EE平台、使用Java编程语言开发的网络游戏,其设计灵感来源于经典的《Counter-Strike》(反恐精英)。这款游戏的出现,为喜爱CS的玩家提供了一个无需付费即可享受游戏体验的选择。...

    Java学习心得知识积累

    以下是对Java基础知识、开发工具、以及应用平台的一些深入理解和经验分享。 #### JDK(Java Development Kit):Java的核心组件 JDK是Java开发的核心工具包,包含了编译、运行Java程序所需的所有工具。它不仅包括...

Global site tag (gtag.js) - Google Analytics