Java Web开发中的Servlet、jsp区别联系
servlet,java,java web,jsp2016-07-23
servlet与JSP区别与联系
Hello World程序
<%= Java Expression %>
<% Java Code %>
<%! Field/Method Declaration %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
区别
forward
方法与response.sendRedirect
区别forward | sendRedirect |
---|---|
控制的转移完全在服务器上进行。不涉及任何网络数据 | 控制的转移通过向客户发送302状态代码和Location响应报头来完成。转移需要另外的网络往返 |
用户不会看到目的JSP页面,而且,我们还可以将页面放在WEB-INF中,防止用户在不经过建立数据的servlet,直接访问这些页面。如果JSP页面只在由servlet生成的数据的上下文中才有意义,则更应该这样做 | 用户能够看到目的页面的地址,并可以记录下来独立访问。如果将JSP设计为数据缺失时使用默认值,这种方式比较适用。例如,重新显示不完全的HTML表单,或汇总购物车的内容是,就会用这种方式。所有的情况下,之前创建的数据都可以从用户中的会话提取出来,甚至对于不涉及servlet的请求,这些JSP页面也有意义 |
//servlet代码片段
ValueObject value = new ValueObject(...);
request.setAttribute("key", value);
RequsetDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/SomePage.jps");
dispatcher.forward(reqest, response);
//sendRedirect
response.sendRedirect("/WEB-INF/SomePage.jps");
<jsp:useBean id="beanName" class="propertyName" scope="page,request,session,application" />
<jsp:getProperty name "beanName" property="propertyName" value="propertyValue" />
<jsp:setProperty name="beanName" property="propertyName" value="propertyValue />"
${expression}
${name}
:在PageContext、HttpServletRequest、HttpSession、ServletContext依次查找。//访问实例对象customer的firstName属性
//JSP Expression Language
${customer.firstName}
//显式Java语法
<%@ page import="package.NameBean" %>
<%
NameBean person = (NameBean)pageContext.findAtrribute("customer");
%>
<%= person.getFirstName() %>
//JSP脚本元素
<jsp:useBean id="customer" type="packege.NameBean" scope="request,session or application> />
<jsp:getProperty name="customer" property="firstName" />
从bean中提取数据时使用<jsp:useBean ... type="package.Class" />
代替<jsp:useBean ... class="package.Class" />
,从而避免JSP页面创建对象。
引用隐式对象:pageContext、param、header、cookie、initParam
pageScope、requestScope、sessionScope、applicationScopy
分类 | 基于Java的定制标签 | 基于JSP的定制标签 |
---|---|---|
创建方式: | 标签处理类,该类定义标签的行为 | 创建基于JSP的标签文件 |
TLD文件,用于将XML元素名称映射到标签实现 | 创建一个使用标签文件的JSP的页面 | |
使用标签库的JSP文件 | ||
两者的区别: | 1、类似于servle与JSP的区别 |
使用JSP标准标签库(JSTL)
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
难免疏忽出错,有问题请留言