JSP (二) -- JSP与HTML集成开发
脚本
脚本可以编写Java语句、变量、方法或表达式。
普通脚本
语法:<% Java代码 %>
<!--普通脚本-->
<%
int b = 456 ; //局部变量
out.println("我在普通脚本里"); //可以直接输出到页面上
System.out.println("哈哈哈哈");//输出到控制台上
%>
- 经验:普通脚本可以使用所有Java语法,除了定义函数。
注意:
脚本与脚本之间不可嵌套,脚本与HTML标签不可嵌套。
普通脚本里面的变量为局部变量(_jspService方法里面)。
声明脚本
语法:<%! 定义变量、函数%>
<%! int i = 0; %>
<%! int a,b,c; %>
<%! Object object = new Object(); %>
<%!
int a = 123; //全局变量
//定义方法
public void m1(){
System.out.println("Hello World! , 你好!");
}
%>
注意:
声明脚本声明的变量是全局变量(转为生成Servlet的成员变量)。
声明脚本的内容可以在普通脚本<% %>中调用。
如果声明脚本中的函数具有返回值,可以直接使用输出脚本调用<%=方法() %>
输出脚本
语法:<%=Java表达式%>
<%= new java.util.Date()%>
注意:
输出脚本可以输出带有返回值的函数。
输出脚本中不能加
;号
JSP注释
JSP注释主要有两个作用:为脚本代码作注释以及作为HTML内容注释。
语法规则
| 语法 | 描述 |
|---|---|
| <%--注释--%> | JSP注释,注释内容不会被发送至浏览器甚至不会被编译 |
| <!--注释--> | HTML注释,通过浏览器查看网页源代码时可以看见注释内容 |
JSP指令
JSP指定用来设置与整个JSP页面相关的属性。
| 指令 | 描述 |
|---|---|
| <%@ page ... %> | 定义页面的依赖属性,比如脚本语言,error页面,缓存需求等等 |
| <%@ include ... %> | 包含其他文件 |
| <%@ taglib ... %> | 引入标签库的定义,可以是自定义标签 |
page指令
语法:<%@ page attribute1="value1" attribute2="value2" %>
Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令
| 属性 | 描述 |
|---|---|
| contentType | 指定当前JSP页面的MIME类型和知乎编码格式 |
| errorPage | 指定当前JSP页面发生异常时需要转向的错误处理页面 |
| isErrorPage | 指定当前页面是否可以作为另一个JSP页面的错误处理页面 |
| import | 导入要使用的Java类 |
| language | 定义JSP页面所用的脚本语言,默认是Java |
| session | 指定JSP页面是否使用session.默认为true立即创建,false为使用时创建 |
| pageEncoding | 指定JSP页面的编码格式 |
<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" errorPage="error.jsp" pageEncoding="utf-8" %>
<%@ page import="java.util.Date" %>
include指令
语法:<%@include file="被包含的SP路径" %>
通过incdude指令来包含其他文件。
被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是当前JSP文件的一部分,会被同时编译执行(静态包含)。
<%@ include file="header.jsp">
...
...
<%@ include file="footer.jsp">
注意:有可能会有重名的冲突问题,不建议使用。
taglib指令
语法:<%@ taglib uri="外部标签库路径% prefix="前缀" %>
引入JSP的标准标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core prefix="c"%>
动作标签
- 语法:<jsp:action_name attribute="value" />
include
语法:<jsp:include page="相对URL地址"/>
jsp:include 动作元素会将外部文件输出结果包含在JSP中(动态包含)
<jsp:inculde page="index.jsp"/>
注意:
前面已经介绍过include指令,它是将外部文件的输出代码复制到了当前JSP文件中。而这里的jsp:include动作不同,是将外部文件的输出结果引入到了当前JSP文件中。
useBean
语法:<jsp:useBean id="name" class="package.className">
jsp:useBean 动作用来加载一个将在JSP页面中使用的JavaBean。
<jsp:useBean id="user" class="com.zjw.User"/>
- 在类载入后,我们可以通过jsp:setProperty和jsp:getProperty动作来修改和获取bean的属性。
setProperty
可以在jsp:useBean元素之后使用jsp:setProperty进行属性的赋值
| 属性 | 描述 |
|---|---|
| name | name属性是必须的。它表示要设置属性的是哪个Bean。 |
| property | property属性是必须的。它表示要设置的是哪个属性。 |
| value | value属性是可选的。该属性用来指定Bean属性的值。 |
<jsp:useBean id="user" class="com.zjw.bean.User"/>
<jsp:setProperty name="user" property="age" value="25"/>
<jsp:setProperty name="user" property="name" value="朱俊伟"/>
getProperty
jsp:getProperty动作提取指定Bean属性的值,转成字符串,然后输出
| 属性 | 描述 |
|---|---|
| name | 要检索的Bean属性名称。Bean必须已定义。 |
| property | 表示要提取Bean属性的值。 |
<jsp:getProperty name="user" property="name"/>
<jsp:getProperty name="user" property="age"/>
forward
语法:<jsp:forward page="相对URL地址"/>
jsp:forward动作把请求转到另外的页面。
<jsp:forward page="index.jsp">
param
语法:<jsp:param name="" value=""/>
在转发动作内部使用,做参数传递
<%
request.setCharacterEncoding("UTF-8");
%>
<%--转发--%>
<jsp:forward page="../index.jsp" >
<jsp:param name="name" value="朱俊伟"/>
</jsp:forward>
<%=request.getParameter("name")%>
内置对象
由JSP自动创建的对象,可以直接使用
| 对象名 | 类型 | 说明 |
|---|---|---|
| request | javax.servlet.http.HttpServletRequest | |
| response | javax.servlet.http.HttpServletResponse | |
| session | javax.servlet.http.HttpSession | 由session="true"开关 |
| application | javax.servlet.http.ServletContext | |
| config | javax.servlet.http.ServletConfig | |
| exception | javax.lang.Throwable | 由isErrorPage="false"开关 |
| out | javax.servlet.jsp.JspWriter | javax.servlet.jsp.JspWriter |
| pageContext | javax.servlet.jsp.PageContext | |
| page | javax.lang.Object当前对象的this | 当前servlet实例 |
四大域对象
JSP有四大作用域对象,存储数据和获取数据的方式一样,不同的是取值的范围有差别
pageContext(javax.servlet.jsp.PageContext)当前JSP页面范围
request(javax.servlet.http.HttpServletRequest)一次请求有效
session (javax.servlet.http.HttpSession) 一次会话有效(关闭浏览器失效)
application(javax.servlet.ServletContext)整个Web应用有效(服务器重启或关闭失效)
package com.zjw.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/scope")
public class Scope extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setAttribute("request","request值");
req.getSession().setAttribute("session","session值");
req.getServletContext().setAttribute("application","servletContext值");
System.out.println("servlet....");
resp.sendRedirect(req.getContextPath()+"/scope/scope.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
pageContext.setAttribute("pageContext","pageContext值");
%>
<%=pageContext.getAttribute("pageContext")%><br>
<%=request.getAttribute("req")%><br>
<%=session.getAttribute("session")%><br>
<%=application.getAttribute("application")%><br>
</body>
</html>
JSP (二) -- JSP与HTML集成开发的更多相关文章
- JavaWeb学习之JSP(二) JSP标签
JSP常用标签 什么是JSP标签 JSP标签,有的地方也叫做JSP动作,在JSP中编写大量的java代码会使JSP页面显得杂乱无章,看起来非常不舒服,因此JSP提供了一些类似html的标签,通过这些标 ...
- 【转】windows和linux中搭建python集成开发环境IDE
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- windows和linux在建筑python集成开发环境IDE
http://blog.csdn.net/pipisorry/article/details/39854707 使用的系统及软件 Ubuntu / windows Python 2.7 / pytho ...
- SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...
- JSP(二)
一.pageContext对象 1>代表当前JSP页面的运行环境, [作用域仅仅局限于当前JSP页面中,出了该JSP页面, 原PageContext域对象被销毁] 2>封装了对 ...
- 文献综述三:基于JSP的商品信息管理系统设计与开发
一.基本信息 标题:基于JSP的商品信息管理系统设计与开发 时间:2015 出版源:Computer Knowledge and Technology 文件分类:jsp技术的系统开发 二.研究背景 通 ...
- Android开发学习总结(二)——使用Android Studio搭建Android集成开发环境
有很长一段时间没有更新博客了,最近实在是太忙了,没有时间去总结,现在终于可以有时间去总结一些Android上面的东西了,很久以前写过这篇关于使用Android Studio搭建Android集成开发环 ...
- 咸鱼入门到放弃7--jsp<二>jsp常用标签
一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...
- jsp二(指令)
一.jsp动作标签: 1)<jsp:forward> 请求转发 相当于之前的request.getRequestDispatcher(..).forward(..); <!--jsp ...
- 实验二 JSP基本动态元素的使用
实验二 JSP基本动态元素的使用 实验性质:验证性 实验学时: 2学时 实验地点: 一 .实验目的与要求 1.掌握JSP中声明变量.定义方法.java程序片及表达式的使 ...
随机推荐
- MySQL安装-centos7
mysql centos7上安装有3中方法 1yum安装 2rpm安装 3编译安装 方法一 rpm安装 1.查找以前是否安装有mysql,使用下面命令:rpm –qa | grep -i mysql ...
- LINUX手动安装万里开源单实例
下载安装包 https://gitee.com/GreatSQL/GreatSQL/releases/ 关闭 selinux 和防火墙 #关闭selinux $ setenforce=0 $ sed ...
- [SDOI2008] Sandy的卡片 题解
讲一种自认为最暴力的方法. 首先肯定还是用差分的思想,对于每一张卡片进行重新标号,在卡片串与卡片串中插入特殊字符,然后找重复了 \(n\) 次的子串. 这里我们对于每一个子串开一个大小为 \(n\) ...
- 关于企业微信扫码登陆vue
关于企业微信扫码登陆vue 企业微信扫码登陆官方文档 采用的是第一种(构造独立窗口登录二维码) 对于前端来说就步骤就是 页面展示二维码 => 用户扫码登陆点击确定 => 确定之 ...
- autMan奥特曼机器人-Linux、Windows、docker安装教程
autMan简介 autMan是机器人牵引的扩展性极强的一站式解决方案 原生支持对接qq框架.qq频道.微信框架(酷V西瓜可爱猫千寻鲲鹏). 内置微信.微信客服.公众号.钉钉.飞书.tg客户端.tg机 ...
- Jsoncpp的安装与使用方式
JsonCpp 是一个C++库,用于解析和生成JSON数据.它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式. 安装Jsoncpp 我们可以输入以下命令安装jsoncp ...
- 遍历列表、元组或字符串的函数enumerate
这两天在处理遇到的问题,循环遍历列表中的字典并输出到excel中 查阅资料发现了一个正和我意的函数 所以周一一上班我就开始试一试 然而发现 enumerate函数只适用于列表.元组或字符串的函数 语法 ...
- 解决nvm ls-remote 列表只出现iojs版本
前言 在 nvm 安装 node 时发现显示不存在此版本,使用 nvm ls-remote 查看可安装列表时发现,列表中只有 iojs $ nvm ls-remote iojs-v1.0.0 iojs ...
- k8s:The connection to the server localhost:8080 was refused - did you specify the right host or port?
前言 k8s 集群 node节点报错:The connection to the server localhost:8080 was refused - did you specify the rig ...
- go json omitempty 关键字 脱坑
用法 大家对于 json 和 struct 之间的转换一定不陌生,为了将代码中的结构体与 json 数据解耦,通常我们会在结构体的 field 类型后加上解释说明,例如在表示一个地址的时候, json ...