内容回顾:B/S
servlet
实质:在服务器端运行的Java类
如何使用:1、继承HttpServlet
2、覆盖doGet()或doPost()
用户管理:
登录(查)、注册(增)、修改密码(改)、删除(删)
增删改查:SQL语句+?(个数及含义要定义好)
借助DBOper类完成具体工作
3、用户会话跟踪:Cookie和Session
JSP:JSP是一种基于Java的服务器端技术,其目的是简化建立和管理动态网站的工作
1、JSP特点:
servlet编程比较复杂,
- 简单快捷:JSP在原来的HTML中,通过添加java程序片段,并通过标签技术的使用从而简化了页面的开发。
- 动态内容的生成和显示相分离:使用HTML或XML来设计页面,使用JSP标签或者脚本来生成页面上的动态内容,
- 组件重用:可重用的JavaBean组件能够在多个JSP之间共享,加速了总体开发过程,方便维护和优化。
- 易于部署、升级和维护:JSP容器能够对JSP的修改进行检测,自动翻译和编译修改后的JSP文件,无须手动编译。
2、JSP与Servlet的比较
- JSP是一种服务器端脚本语言,它降低了Servlet的使用难度
- JSP在本质上就是Servlet
- JSP提供了Servlet能够实现的所有功能,实际上是首先被翻译成Servlet后才能编译并运行的,所以JSP几乎拥有Servlet的所有优点
- 与Servlet相比,JSP更加适合制作动态页面,因为单纯使用Servlet开发动态页面是相当繁琐的。
- JSP和Servlet的区别如下:
3、第一个JSP程序
<%@ page language="java" contentType="text/html; charset=GBK"%>
自己编译器里面的:<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
4、JSP执行原理
(1)客户端发出请求(request)
(2)容器接收到请求后检索对应的JSP页面,如果该 JSP页面是第一次被请求,则容器将其 翻译成一个Java文件,即Servlet
3、容器将翻译后的Servlet源代码 编译形成字节码,即.class文件,并加载到内存执行;
4、最后把执行结果即响应(response) 发送到客户端
**JSP再次执行原理:**当这个JSP页面再次被请求时,只要该JSP文件没有发生过改动,JSP容器就直接调用已装载的字节码文件,而不会再执行翻译和编译步骤,这样大大提高了服务器性能。
5、JSP指令
JSP指令用来向JSP容器提供编译信息。指令 并不向客户端产生任何输出,所有指令只在 当前页面有效
<%@指令名 属性="值" 属性="值"%>
常用的指令:page指令、include指令、taglib指令
page指令简单用法:
<%@ page language="java" contentType="text/html; charset=GBK"%
language属性用来设置JSP页面中的脚本语言,目前此属性值只能是“java”;
contentType属性用来设置页面类型及编码,“text/html; charset=gbk”指明了JSP页面文本是html格式并且采用GBK中文字符集。
6、JSP声明
JSP声明用于在JSP页面中定义变量和方法JSP声明通过“<%! %>”定义。
一个JSP页面可以有多个声明,每个声明中可以同时定义多个变量或方法。每个JSP声明只在当前JSP页面中有效。
JSP声明的语法格式如下:
<%!声明的内容%>
7、JSP表达式
JSP表达式用于将Java表达式的运行结果输出在页面中JSP表达式通过“<%= %>”定义。
表达式后不能加分号,%和=之间不能有空格
<%!
//全局方法和变量
private String str = "全局变量";
void setStrParam(String param) {
str = param;
}
%>
JSP被翻译成Servlet,而JSP声明中 变量与方法实际上就是定义在翻译成的Servlet中的,所以本质上就是 类的属性和方法。
如果不加!,就是普通的局部变量,所以在后面的y++值都是0,而每次一刷新jsp,x都会加1
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<h1>晚上好!!</h1>
12345
<%
int i,sum=0;
for(i=1;i<100;i++){
sum+=i;
}
out.println(sum);
%>
<%!int x =0; %>
<%int y =0; %>
<%=x++%>
<%=y++%>
<table border=1>
<%for(int j=1;j<=10;j++)
{%>
<tr>
<td><%=j%></td>
<td>孙<%=j%></td>
</tr>
<%}%>
<%
for (i = 1; i < 101; i++)
out.println("<tr><td>" + i + "</td>" + "<td>" + "孙" + i + "</td></tr>");
%>
</table>
</body>
</html>
执行结果如下: