JSP与Servlet 程序设计教程

概述

动态网页技术与JSP优势

在这里插入图片描述
在这里插入图片描述

JSP中调用java代码

JSP三种基本动态技术元素:表达式、声明、脚本

表达式

目的是将一些动态的信息显示到页面的最终输出结果中
语法: <%= 变量或表达式 %>

声明

用于定义变量、方法、类、静态初始块(通常只在声明部分定义变量及方法)
语法:<% ! 变量定义或方法定义 %>

脚本

JSP动态生成网页的核心部分,可以利用java语言的三大结构生成不同的页面元素
语法:<% 脚本内容 %>

注释

语法:<% – 注释信息 – %>

JSP指令

page指令

可以控制类的导入、内容类型等设置,通常放置在JSP的开始位置
语法:<%@ page 属性名1=“属性值1” […属性名n=“属性值n”] %>

  • import属性 <%@ page import=“类的相对路径” %>
  • contentType与pageEncoding 标明发送到客户程序的文档MIME类型 <%@ page contentType=“text/html;charset=UTF-8” %> (两者配合使用) 单独设置字符集的话 <%@ page pageEncoding =“字符集” %>
  • language 指定页面使用的脚本语言 默认是java
  • errorPage 本页面加载错误时跳转的哪一个界面
  • isErrorPage 表明为错误显示界面
  • isELIgnored 是否解析JSP语言表达式
  • 其他:session、buffer等

include指令

将属性file所指向的文件包含到当前JSP页面中(一般用于相同的头或者页脚显示,减少代码量)
语法:<%@ include=“被包含的文件名(jsp页面)” %>

JSP动作

JSP动作通常是在向JSP页面发送请求时才会执行的操作,也就是说它是在页面请求期间执行的,这也是JSP动作与JSP行为的本质区别

jsp:include动作

jsp:include动作与include指令类似 不同是他可以传递参数
语法:< jsp:include page=“被包含的文件路径(绝对或相对)”/ > 或
< jsp:include page=“被包含的文件路径(绝对或相对)”>

< jsp:param name=“参数名” value=“参数值” / >

< / jsp:include >
不同:
在这里插入图片描述

jsp:forward动作

作用是转发请求,如果用户请求中包含提交的数据,数据也将一块被转发(只能转发到站内文件)
语法:语法:< jsp:forward page=“转发目标页面”/ > 或
< jsp:forward page=“转发目标页面”>

< jsp:param name=“参数名” value=“参数值” / >

< / jsp:forward >

jsp:plugin动作

在网页中嵌入applet(基本上已经弃用)或javaBean
语法:< jsp:plugin code=“插件实现最顶级类文件” codebase=“插件类根目录”
type=“插件类型” width=“宽度” height=“高度” />
< jsp:fallback>替换文字< / jsp:fallback>
< / jsp:plugin>

JSP隐含对象

request

一个请求对象,它包含了用户发起请求所包含的所有应用数据。
常用方法:

  • 取得/设置指定参数——request.getParameter()/setAttribute()
  • 取得指定数组参数——getParameterValues()
  • 取得URL参数字符串——getQueryString()
  • 取得指定名称——getParameterNames()
  • 请求参数中文处理——request.setCharacterEncoding(“UTF-8”)
  • 取得session——request.getSession();
  • 取得请求头部信息
  • 取得客户和主机信息

response

代表请求的相应对象。
常用方法:

  • 设置Content-Type——response.setContentType(“text/html;charset=utf-8”);
  • 发送错误相应至客户端
  • 重定向——response.sendRedirect();
    当使用Redirect跳转Servlet时,跳转实在客户端实现的,也就是说客户端浏览器实际上请求了2次服务器,第1次获取了重定向状态码与重定向的网址,第2次访问真实地址。

session

保存当前会话信息
常用方法:

  • 取得/设置指定参数——session.getAttribute()/setAttribute()

out

out对象向相应中输出指定信息

  • 输出信息——out.print()

java Bean在JSP中应用

语法:头部添加标签
< jsp:useBean id=“引用名称” scope=“session|request|page|application”
class=“完整类名”
|beanNane=“Bean名称”|type=“对象类型” />
获取和设置属性
< jsp:setProperty name=“Java Bean实例名(上面的id)” property=“属性名” value=“待设值”|param=“参数名称” />
< jsp:getProperty name=“Java Bean实例名(上面的id)” property=“属性名” />

Servlet基础

servlet功用

  • 读取客户端发送的显示数据或者对客户端发送的数据进行预处理
  • 读取客户端发送的隐含数据
  • 生成结果
  • 向客户发送显示数据
  • 发送隐含的相应数据

servlet生成html

response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
writer.print( JSONObject.toJSONString( result ) );//打印一行数据到当前请求界面
writer.flush();
writer.close();

Servlet处理客户请求

读取客户请求参数

与JSP操作request一致
可以操作session

 HttpSession session = request.getSession();
 session.setAttribute("user", user);
 session.getAttribute("user");

跳转:

(1) 转发:

//request可以添加参数
request.getRequestDispatcher("路径").forward(request,response);

(2)重定向

response.sendRedirect("路径");

(3)直接输出返回到ajax中(注意使用ajax请求的才可以,然后由ajax进行界面跳转)

response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
writer.print( JSONObject.toJSONString( result ) );//返回json格式字符串
writer.flush();
writer.close();

模型-视图-控制框架

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

JSP表达式语言 EL

JSP内置了EL表达式
能够以更简洁的方式显示结果,表达式语言可以访问请求或者其他作用域中的对象
功能:

  • 访问存储在不同作用域的中的对象
  • 方便的访问java Bean的属性
  • 简单的访问集合元素
  • 可以方便访问请求等隐式数据
  • 支持简单的运算符操作
  • 无需类型转换
  • 以空值取代异常
    语法:
    ${ 表达式 }

访问变量

访问java Bean的属性
首先在servlet中
request.setAttribute("user",user);
在jsp中
${ user.userName }/${ user[userName] }
访问不同作用域中的属性

当变量名一样时 request>session>application

访问集合中的变量
${ userList[0].userName }/${ userList[0][userName] }

JSTL

OGNL是Object Graphic Navigation Language(对象图导航语言)

在这里插入图片描述
然后在jsp中引入

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

EL与JSTL配合使用案例:

<tbody>
                    <c:forEach items="${reports}" var="report">
                        <tr>
                            <td>${report.id}</td>
                            <td>${report.createAt}</td>
                            <td>${report.title}</td>
                            <td>${report.userId}</td>
                            <td>${report.type}</td>
                            <td>${report.states}</td>
                            <td>${report.summary}</td>
                                <%--<td><%= report.getUrl()%></td>--%>
                            <td><a href="${report.url}">下载</a></td>
                        </tr>
                    </c:forEach>
</tbody>

end

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值