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格式的值.

顺序如下: 1、多种字体大小显示 2、c:out标记输出 3、获取当前时间 4、include包含语句 5、建立错误处理页面的范例程序 6、jsp:forward 7、简单计数器 8、设置页面属性 9、使用GB2312编码 10、使用Big5编码 11、c:catch的用法 12、 begin、end和step的用法 13 、 循环 14、 varStatus 的四种属性 15、 的用法 16、从客户端传送数据至服务端 17、使用Unicode转义字符 18、使用朝鲜语字符集 19、JSP中最简单的国际化程序 20、错误检测 21、抛出异常 22、 的用法 23、和 的用法 24、 的用法 25、jsp-include的用法 26、汉字处理 27、网页重定向 28、自动更新网页 29、存取session 30、 的用法 31、单选型列表框 32、jsp文件中定义类 33、取得 JSP Container 版本 34、javax.servlet.jsp.JspWriter - out 对象 35、page 隐含对象 36、application 对象 37、PageContext 对象 38、Page范围 - pageContext 39、测试要显示的中文 40、IF控制符的操作 41、HttpServletRequest 接口所提供的方法 42、 网上测验 43、HttpSession - session 对象 44、 多选型列表框 45、解决浏览器 cache 的问题 46、使用 EL、JSTL 处理表单数据 47、 EL隐含对象 param、paramValues 48、EL隐含对象 pageContext 49、EL算术运算符 50、EL关系运算符 51、EL的运算符 52、选择钮的使用 53、检查框的使用 54、群组检查框的使用 55、数字、货币、百分数格式化 56、日期格式化 57、JSTL设置语言地区 58、Cookie数据的存取 59、session有效时间的设置与取得 60、session时间与ID 61、Cookie有效时间的设置 62、利用隐藏字段传送数据 63、JSP 使用 JavaBean 的方法 64、JSP 使用 JavaBean 65、范围为 Page 的 JavaBean范例程序 66、范围为 Request的 JavaBean 67、范围为 Session 的 JavaBean 68、范围为 Application 的 JavaBean 69、删除 JavaBean 70、url重组 71、Switch语句 72、环境变量 73、forward重定向 74、文件的建立与删除 75、取得文件属性 76、取得目录中的文件 77、目录的建立与删除 78、自Cookie存取日期/时间数据 79、管理Session变量 80、数据库中的记录数与记录指针位置 81、利用absolute方法设置记录位置 82、使用jsp指令生成Word文档 83、JSP网页模板 84、判断是否空白文件 85、cookie 用户登录次数 86、获取用户的真实IP地址 87、获取用户的浏览器信息 88、在客户端进行数据检查 89、在JSP中获取当前绝对路径 90、读取表单中所有参数 91、分行写入数据 92、显示请求URL 93、判断session是否过期 94、参数式查询数据库 95、取得数据库中各栏名称 96、使用JavaBean、设置和获取Bean的属性 97、设置Bean的一个属性与输入参数关联 98、实现基于数据库的站内搜索 99、DOM读取XML文档 100、SAX读取XML文档
参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

蒙蒙小公举

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值