初识JSP,第一天
1.什么JSP
java Server Page java 服务端的页面,它和servlet 一样可以提供动态的html 响应。 不同的是 servlet 以 java 代码 为主
jsp 以html 为主 内嵌少量的java 代码。 jsp 以 .jsp 结尾.以最简单的一个为例
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Time</title>
</head>
<body>
现在时间是:<%= new Date()%> </body>
</html>
2.JSP 和 Servlet 的关系
当请求jsp 页面时,服务器端会把 jsp页面经过 转义(把jsp 变成java)编译 (java 变成class)形成servlet 对象 就可以提供动态的html 响应。所以jsp 本质上就是servlet。
生成的.jsp.java路径是E:\apache-tomcat-8.0.52\work\Catalina\localhost\jsp-day06\org\apache\jsp
写个简单的例子:
<%!
int s = 10001;
public String getName() {
return "liweijie";
}
%>
<%=s %><br>
<%=getName()
输出:
10001
liweijie
3.声明区
语法 : <%! %>
作用: 用来定义变量 以及 定义方法
<%!
int s = 10001;
public String getName() {
return "liweijie";
}%>
4.表达式
语法: <%=表达式%>
作用:使用表达式来进行取值
<%=getName() %>
5.代码区
语法: <% %>
作用:可以使用任何的java语法 编写java 代码 ;好了下面我们来个进阶的,前提是谢谢好一个model实体类BankAccount:
<%
BankAccount acc = new BankAccount(1, "1001", "12345", 12);
BankAccount a1cc = new BankAccount(2, "1002", "12345", 13); %>
<table>
<tr>
<td>id</td>
<td>acc_no</td>
<td>password</td>
<td>money</td>
</tr>
<tr>
<td><%=acc.getId()%></td>
<td><%=acc.getAcc_no()%></td>
<td><%=acc.getAcc_password()%></td>
<td><%=acc.getAcc_money()%></td>
</tr>
<tr>
<td><%=a1cc.getId()%></td>
<td><%=a1cc.getAcc_no()%></td>
<td><%=a1cc.getAcc_password()%></td>
<td><%=a1cc.getAcc_money()%></td>
</tr>
</table>
当然,这种方式显然还不够简介,所以我们再次将<tr>进行升级:
<%
BankAccount acca = new BankAccount(1, "1001", "12345", 12);
BankAccount a1cc = new BankAccount(2, "1002", "12345", 13);
BankAccount a1ce = new BankAccount(3, "1003", "45645", 324);
BankAccount a1cf = new BankAccount(4, "1004", "976", 433);
List<BankAccount> list = new ArrayList<>();
list.add(acca);
list.add(a1cc);
list.add(a1ce);
list.add(a1cf);
%>
<table>
<tr>
<td>id</td>
<td>acc_no</td>
<td>password</td>
<td>money</td>
</tr> <!-- 方法一:此处不能使用PrintWriter, 使用PrintWriter打印的位置不正确 -->
<%
for (int i = 0; i < list.size(); i++) {
BankAccount acc = list.get(i);
out.append("<tr>");
out.append("<td>" + acc.getId() + "</td>");
out.append("<td>" + acc.getAcc_no() + "</td>");
out.append("<td>" + acc.getAcc_password() + "</td>");
out.append("<td>" + acc.getAcc_money() + "</td>");
out.append("");
out.append("</tr>");
}
%>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<!-- 方法二:此处不能使用PrintWriter, 使用PrintWriter打印的位置不正确 -->
<%
for (int i = 0; i < list.size(); i++) {
BankAccount acc = list.get(i);
String s1 = "<tr><td>'" + acc.getId() + "'</td><td>'" + acc.getAcc_no() + "'</td><td>'"
+ acc.getAcc_password() + "'</td><td>'" + acc.getAcc_money() + "'</td></tr>";
}
%> <!-- 方法三:此处不能使用PrintWriter, 使用PrintWriter打印的位置不正确 --> </table>
虽然已经升级了,但作为一个开发者来说,显然还是不够完美:
jsp页面:
<%
List<BankAccount> list=(List<BankAccount>)request.getAttribute("accounts");
%>
<%
for(int i=0;i<list.size();i++){
BankAccount acc = list.get(i);
out.append("<tr>");
out.append("<td>" + acc.getId() + "</td>");
out.append("<td>" + acc.getAcc_no() + "</td>");
out.append("<td>" + acc.getAcc_password() + "</td>");
out.append("<td>" + acc.getAcc_money() + "</td>");
out.append("");
out.append("</tr>");
}
%>
servlet页面:
@WebServlet("/BankAccount.do")
public class S_BankAccount extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//response.setContentType("text/html;charset=utf-8");
//BankAccount
BankAccount acca = new BankAccount(1, "1001", "12345", 12);
BankAccount a1cc = new BankAccount(2, "1002", "12345", 13);
BankAccount a1ce = new BankAccount(3, "1003", "45645", 324);
BankAccount a1cf = new BankAccount(4, "1004", "976", 433);
List<BankAccount> accounts = new ArrayList<>();
accounts.add(acca);
accounts.add(a1cc);
accounts.add(a1ce);
accounts.add(a1cf);
request.setAttribute("accounts", accounts);
//转发给demo5.jsp
request.getRequestDispatcher("demo5.jsp").forward(request, response);
}
6.注释
6.1 标记语言的注释 -- 发给浏览器 浏览器通过查看源代码可以看到
<!-- 这是第二种显示数据的方式 -->
6.2 jsp语法注释
<%-- 这是jsp语法注释 不发给浏览器 --%>
6.3 java语言注释
在代码块中可以使用 java语言的注释 也不发给浏览器
7.JSP中的指令
7.1 指令的格式
<%@指令名 属性="属性值" 属性2="属性值" %>
7.2 jsp 中的三大指令
page 指令 用来导包 和 做一些页面属性的设置
import 导入对应的类型
buffer 缓冲大小 默认 8k
errorPage 当页面出现错误 跳转到错误展示页面
isErrorPage 是不是一个展示错误的页面 如果是就是true 不是就是false
pageEncoding 页面文字的编码
contentType 响应的格式 和 显示的编码
isELIgnored 是否忽略EL表达式 默认 是false
taglib 指令 标签库指令 用来引入对应的标签库位置
prefix 标签库的简称
uri 标签库的位置标识
include 指令 页面包含指令 用来包含指定的页面 (静态包含)
file 指定包含的文件 (先把被包含页面 拷贝到对应的页面 再转回成servlet
所以只有一个servlet 产生)
8.JSP 中的动作
8.1 include 动作 (动态包含)
<jsp:include page="页面的位置" />
jsp 的include 动作叫动态包含 意思是 先将被包含的页面转换成对应的class
然后再将被包含的页面 动态的加载到 包含页面,所以这样会产生两个class文件。
其实动态包含 还体现在 可以向被包含页面传递数据。
通过<jsp:param value="值" name="key" /> 在被包含页面
使用request.getParameter("key")

图片转载自:https://blog.csdn.net/u011024652/article/details/52026920
8.2 forward 动作
jsp 页面中可以通过java 代码来完成转发
也可以使用 <jsp:forward 动作来完成转发 同时 利用 <jsp:param 进行参数传递。
9.发送一个 bankAccountAll.do 到达一个servlet 。这个servlet 创建DAO 实现类对象
并通过dao 对象 获取银行账户列表。把这个银行账户列表放入request 中转发到对应的jsp
页面 在jsp 页面中把银行账户列表数据显示到一个table表格中。
初识JSP,第一天的更多相关文章
- 第二章 初识JSP
第二章 初识JSP 一.JSP简述 1.是JSP JSP是指在HTML中嵌入Java脚本语言.全称(Java Server Pages) 当用户通过浏览器访问Web应用时,使用JSP容器对请求的J ...
- 初识Jsp,JavaBean,Servlet以及一个简单mvc模式的登录界面
1:JSP JSP的基本语法:指令标识page,include,taglib;page指令标识常用的属性包含Language用来定义要使用的脚本语言:contentType定义JSP字符的编码和页面响 ...
- JSP(一):初识JSP
在Servlet中,我们多次用到了jsp页面,今天就来仔细聊聊JSP. 一.概念 JSP全名是Java Server Pages,可理解为Java服务端页面,是一种动态网页开发技术,其本质是一个简化的 ...
- eclipse开发Java web工程时,jsp第一行报错,如何解决?
与myeclipse不同,eclipse开发java web项目时是要下载第三方软件(服务器)的,正是这个原因,很多初学者用eclipse学习java web的时候,总是会遇到一些小问题.其中常见的一 ...
- JSP第一章动态网页的基础
什么是动态网站(dynamic website)? 动态网站: 误区:初学者一般认为动态网页,就是会动的网页,但实际上不是这样的. 动态网页是指在服务器端运行的,使用程序语言设计的交互式网页,它们会根 ...
- java web学习之初识jsp
用java语言(+html语言)开发动态资源的技术: jsp的运行过程,1:tomcat服务器将jsp代码翻译成java代码,并且编译成class文件 2:tomcat服务器构造类对象 3:tomca ...
- JSP之->初识JSP
JSP 引用百度百科的介绍: JSP(Java Server Pages)是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动态网页技术标准.JSP技术有点类似ASP技术,它是在 ...
- 初识python第一天
一.python简介 1.1 python的诞生 python的创始人吉多.范罗苏姆(Guido van Rossum),他在开发python语言之前曾使用过几年的ABC语言,ABC是一门主要用于教学 ...
- 初识jsp
复习: 1.servlet生命周期: (1)默认是以第一次请求的时候创建并初始化Servlet,而且只做一次.(构造函数 init()) web.xml(配置后,是可以达到在服务启动后,立刻进行ser ...
随机推荐
- [Scala随用随学] —— sealed声明的作用
今天在看MLlib的源码时,看到Vector的声明是sealed trait,很好奇这个sealed有什么作用,与是搜到了这个文章: http://www.cnblogs.com/rollenholt ...
- Mysql Insert Or Update语法例子
有的时候会需要写一段insert的sql,如果主键存在,则update:如果主键不存在,则insert.Mysql中提供了这样的用法:ON DUPLICATE KEY UPDATE.下面就看看它是如何 ...
- iOS没你想的那么安全?
iOS应用由于直接运行在用户的手机上,而不是运行在后台服务器上,所以更容易被攻击. 任何系统都会有木马病毒的产生,不存在绝对的安全,iOS应用由于直接运行在用户的手机上,而不是运行在后台服务器上,所以 ...
- 【C++对象模型】使用gcc、clang和VC++显示C++类的内存布局
引言 各种C++实现对C++类/对象的内存布局可能有所不同,包括数据成员的顺序.虚函数表(virtual table: vtbl)的结构.继承关系的处理等.了解C++类/对象的布局,对于理解C++各种 ...
- 苹果隐私条例更新:收集用户电话和 Email 数据
简评:苹果现在会收集用户的电话和电子邮件,作为用户「信任评级」的一部分,我还是支持的,因为园长被黑产攻击 AppleID,直接刷爆了我的卡!但是在大环境看,隐私已经不存在了. Apple 最近悄悄为 ...
- Bootstrap Table使用方法详解
http://www.jb51.net/article/89573.htm bootstrap-table使用总结 bootstrap-table是在bootstrap-table的基础上写出来的,专 ...
- Linux之Ubuntu中的安装应用
在Ubuntu中我们经常会使用apt install “APP name” 来安装需要的应用. 从图中我们可以看到,我们使用apt install map命令安装一个map小游戏,这个小游戏是一个用四 ...
- 关于Hibernate的一个简单小程序
本人根据视频学习了一下三大框架中比较简单的一个Hibernate,并简单完成了一个运用Hibernate的小程序 Hibernate是一个简化web程序Dao层的一个框架,应用他,可以完全脱离sql语 ...
- [Alpha]Scrum Meeting#5
github 本次会议项目由PM召开,时间为4月7日晚上10点30分 时长10分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写博客目录 整理清明开会记录 SiMrua 模型再训练(issue#1 ...
- Powershell cannot be loaded because running scripts is disabled on this system 解决办法
问题背景 第一次跑ps时,出现了下面的提示.这是因为windows不允许执行脚本而已,不要大惊小怪. 解决办法 这个需要管理员执行,不然会出现以下的情况 正常情况