JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
(1) 把JSP页面中的HTML标记(页面的静态部分)发送给用户的浏览器,由浏览器中的HTML解释器负责解释执行HTML标记。
(2) 负责处理JSP标记,并将有关的处理借结果发送到用户的浏览器。
(3) 执行”<%“和”%>”之间的Java程序片(页面中的动态部分),并把执行结果交给用户的浏览器显示。
(4) 当多个用户请求一个JSP页面时,Tomcat服务器为每个用户启动一个线程,该线程负责执行常驻内存的字节码文件来响应相应用户的请求。
html 是超文本标记语言。html里的一切元素都适用。
page指令
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
page指令用来定义整个JSP页面的一些属性和这些属性的值。page指令标记可以指定如下属性的值。
language | 该属性值目前只能取 java,且属性的默认值也是 java。 |
---|---|
import | 为JSP页面引入Java核心类库。 |
属性名 | 属性值 |
contentType | 确定JSP页面响应的MIME类型和JSP页面字符的编码。 |
session | 设置是否需要使用内置对象。 |
buffer | 指定out的缓冲区的大小或者不适用缓冲区。 |
auotFlush | 指定out的缓冲区被填满是,是否自动刷新。 |
isThreadSaf | 设置JSP页面是否可以多线程访问。 |
info | 为JSP页面准备一个可能需要经常使用的字符串。 |
include指令
如果需要在JSP页面的某处整体插入一个文件,就可以考虑使用这个指令标记。该指令标记的形式如下。
<%@ include file="文件的URL" %>
taglib指令
申明该JSP文件使用了自定义的标签。
<%@taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
1、uri属性:用来指定标签库的存放位置。
2、prefix属性:指定该标签库必须使用的前缀。
1.HTML注释
2.JSP页面注释
<%-- 注释的内容 --%>
可以在<%= %>之间插入的内容
<%=x+y %> 注意:<%和=之间不要有空格。
可以在<% %>之间插入的内容。
<table border="1" id="tab">
<%
for (int i = 0; i < 10; i++) {
%>
<tr>
<%
for (int j = 0; j < 10; j++) {
String color = Integer.toHexString(random.nextInt(8888));
%>
<td bgcolor="#<%=color%>"><%=++count%>td>
<%
}
%>
tr>
<%
}
%>
table>
可以在<%! 和 %>之间插入的语句
<%!
int count = 0;
private Random random = new Random();
public int getFontSize(){
return random.nextInt(80);
}
public String getColor(){
return Integer.toHexString(random.nextInt(8888));
}
%>
<jsp:param name="属性名字" value="属性的值"/>
对象名称 | |
---|---|
out | |
response | |
request | |
pageContext | |
session | |
application | |
config | |
page | |
exception |
request常用方法
<p>姓名:<%= request.getParameter("username")%>p>
<p>爱好:<%=Arrays.toString(request.getParameterValues("hobby")) %>p>
request.setCharacterEncoding("utf-8");
request.getHeader("Host") //127.0.0.1:8080
request.getHeaderNames()
<%
Enumeration<String> e = request.getHeaderNames();
while (e.hasMoreElements()) {
String headname = e.nextElement();
Object value = request.getHeader(headname);
out.println(headname + "=" + value + "<br>");
}
%>
可以获取到信息如下:
accept=image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, */*
referer=http://localhost:8080/jsp1/register.jsp
accept-language=zh-CN
content-type=application/x-www-form-urlencoded
ua-cpu=AMD64
accept-encoding=gzip, deflate
user-agent=Mozilla/5.0 (Windows NT 6.2; Win64; x64; Trident/7.0; rv:11.0) like Gecko
host=localhost:8080
content-length=122
connection=Keep-Alive
cache-control=no-cache
cookie=JSESSIONID=DEFC9244E4FA4E2618E58A5591ED50E5; Webstorm-f7b670b3=f4532459-88f1-4a59-a617-5ee0df0d2035
request.getServerName() //127.0.0.1
request.getRemoteHost() //127.0.0.1
request.getServerPort() //8080
request.getParameterNames() 获取用户提交的所有参数的名字
request.getParameterNames()
<%
Enumeration messages = request.getParameterNames();
while (messages.hasMoreElements()) {
String s = (String)messages.nextElement();
out.println(s);
}
%>
获取的信息如下
username password states hobby prop self
request.getRemoteAddr() 获取用户的IP地址
IP:<%=request.getRemoteAddr() %> //0:0:0:0:0:0:0:1
bin目录
bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令)。
很多环境变量的设置都在此处,
例如可以设置JDK路径、tomcat路径
startup 用来启动tomcat
shutdown 用来关闭tomcat
修改catalina可以设置tomcat的内存
conf目录
conf目录主要是用来存放tomcat的一些配置文件。
server.xml可以设置端口号、设置域名或IP、默认加载的项目、请求编码 。
web.xml可以设置tomcat支持的文件类型。
context.xml可以用来配置数据源之类的 。
tomcat-users.xml用来配置管理tomcat的用户与权限 。
在Catalina目录下可以设置默认加载的项目 。
lib目录
lib目录主要用来存放tomcat运行需要加载的jar包。
logs目录
顾名思义,这是存放日志文件的目录。
temp目录
temp目录用户存放tomcat在运行过程中产生的临时文件。
webapps目录
webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。
work目录
work目录用来存放运行时的编译后文件。 清空work目录,然后重启tomcat,可以达到清除缓存的作用。
1.指令语法不同
<%@ include file="文件的URL"%>
<%@ jsp: include page="文件的URL"%>
2.处理方式不同
inlude指令标记是在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖当前JSP页面;而inlcude动作标记是在JSP页面运行时才处理文件,被处理的文件在逻辑和语法上独立于当前JSP页面,可以更加灵活地是使用param子标记处理所需要的文件。
3.处理时间不同
include指令标记执行速度快;而include动作标记执行速度相对来说要慢一些。
1.get:地址栏传参 post:不是在地址栏传参,隐式请求体方式
2.get不安全,post安全
3.get:传参字符长度有限制(大概255)。post没有限制
4.get:作为邮件传输或收藏 post不可以
form 属性列表
action=“reg.jsp” 表单提交的url
target="_blank" 表单提交的目标tab
method=“get” 表单提交的方式get| post
enctype=“multipart/form-data” 表单数据的编码方式
get:只能传输文本、长度有限制、数据明文(不安全),速度快。
post:传输类型无限制、长度无限制、数据安全,速度慢。
enctype="multipart/form-data"表示数据进行2进制编码;
当表单中有文件上传时,必须指定它还要必须以post方式进行。
enctype是表单提交时,数据的编码形式:
enctype=‘application/x-www-form-urlencoded’ url编码
enctype=‘multipart/form-data’ 数据流编码
enctype=‘text/plain’
target=’_blank’ 新开tab页提交数据
input表单输入框不记录输入过信息的方法
input类型常用type属性可以指定的GUI类型
readonly 只读属性
disabled 禁用,一但表单元素被禁用,那么不会参与数据的提交
checked 单选或复选的默认选中。
selected 下拉菜单的默认选中。
提交数据
提交数据类型
<input type='text'> 单行文本
<input type='password'> 单行密码-->
<input type='checkbox'> 复选-->
<input type='radio'> 单选
<input type='hidden'> 隐藏
<input type='file'> 文件
按钮类型
<input type='submit'> 提交按钮
<input type='button'> 普通按钮
<button></button> 按钮标签
<button type='button'>
<img src='images/a4.jpg'>图片提交
</button>
<input type='reset'> 重置按钮
<input type='image'> 图片提交按钮
注意:如果需要参与数据的提交,那么必须有name属性。
2<select></select> 下拉菜单
注意:通过 <optgroup></optgroup> 标签把相关的选项组合在一起
3<textarea></textarea> 多行文本
注意:多行文本域,没有value属性,标签之间的内容会被当作value值,不支持html格式的值.