jsp编程经验总结

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中的代码,要求对4种预定义变量熟练掌握,它们是: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转换时)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值