JSP程序设计(第一天)

JSP简介

JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。

JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。


JSP基本结构

  • 一个JSP页面由5种元素组成而成。
  • 普通的HTML标记。
  • JSP标记,如指令标记、动作标记。
  • 变量和方法的声明。
  • Java表达式。
  • Java表达式。

JSP的执行过程

在这里插入图片描述


JSP的运行原理

(1) 把JSP页面中的HTML标记(页面的静态部分)发送给用户的浏览器,由浏览器中的HTML解释器负责解释执行HTML标记。

(2) 负责处理JSP标记,并将有关的处理借结果发送到用户的浏览器。

(3) 执行”<%“和”%>”之间的Java程序片(页面中的动态部分),并把执行结果交给用户的浏览器显示。

(4) 当多个用户请求一个JSP页面时,Tomcat服务器为每个用户启动一个线程,该线程负责执行常驻内存的字节码文件来响应相应用户的请求。


七大元素

1.HTML文本元素

html 是超文本标记语言。html里的一切元素都适用。

2.指令

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属性:指定该标签库必须使用的前缀。

3.注释

1.HTML注释

<!--   注释的内容   -->

2.JSP页面注释

<%-- 注释的内容 --%>

4.表达式

可以在<%= %>之间插入的内容

<%=x+y %> 		注意:<%和=之间不要有空格。

5.Java程序片

可以在<% %>之间插入的内容。

<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>

6.属性和方法的声明

可以在<%! 和 %>之间插入的语句

<%!
	int count = 0;
	private Random random = new Random(); 
	public int getFontSize(){
		return random.nextInt(80);
	}
	public String getColor(){
		return Integer.toHexString(random.nextInt(8888));
	}
		
	%>

7.动作标记元素

<jsp:param	name="属性名字"		value="属性的值"/>

九大内置对象

对象名称
out
response
request
pageContext
session
application
config
page
exception

request常用方法

  • request.getParameter(String s) 获取用户提交的信息。
<p>姓名:<%= request.getParameter("username")%></p>
  • request.getParameterValues(“hobby”) 获取用户提交的复选框信息。
<p>爱好:<%=Arrays.toString(request.getParameterValues("hobby")) %></p>
  • request.setCharacterEncoding(String s) 使用request的方法之前,一定要设置编码。
request.setCharacterEncoding("utf-8");
  • request.getHeader(String s) 获取HTTP协议定义的头文件信息。
request.getHeader("Host")				//127.0.0.1:8080
  • request.getHeaderNames() 获取头名字的一个枚举
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() 获取服务器的名字
request.getServerName()				//127.0.0.1
  • request.getRemoteHost() 获取用户机的名称
request.getRemoteHost()				//127.0.0.1
  • request.getServerPort() 获取服务器的端口号
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 

Tomcat目录

在这里插入图片描述

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动作标记执行速度相对来说要慢一些。


Post和Get提交数据的区别

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 type=“text” name=“htmer” autocomplete=“off” /> 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格式的值.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章