jsp入门小节

jsp通俗易懂就是将Java代码搬到了浏览器上

指令标识

<%@ 指令名 属性1="属性值1"%>

比如说eclipse自动生成的代码:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
不同属性用空格或者,隔开

指令名包括:page , include , taglib

1.page
(1):language   只支持java
(2)import= " java.util.* " ; 比如说:<%@ page import = "java.util.Date" %>
举例:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.util.Date" %>
<%@ page import = "java.text.SimpleDateFormat" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<%
	Date a = new Date();
	SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
	out.print(sm.format(a));
%>

</body>
</html>
****************************************************************************
2.include
(1):只有一个属性,file="path",作用就是导入其他文件里面的代码(在哪导入在哪运行),宏观来讲是把两个文件合成了一个文件,所以说不能有重名代码。
在上面的代码改进一下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ page import = "java.util.Date" %>
<%@ page import = "java.text.SimpleDateFormat" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@ include file = "NewFile1.jsp" %>		调用另一个文件
<%
	Date a = new Date();
	SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
	out.print(sm.format(a));
%>
<%@ include file = "NewFile1.jsp" %>
</body>
</html>

NewFile1.jsp文件内容:这里面不需要写HTML的头部语句
	<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
	我好喜欢你啊!

运行结果:我好喜欢你啊! 2020-05-14-06-55-24 我好喜欢你啊! 
----------------------------------------------------------------------------------
脚本:
<%= 表达式 %>		只要是能完成的一个单独语句就行,结果将被转换为字符串,可以动态的和HTML语句配合,就是一个输出语句

<%! 声明全局变量或方法 %> 	定义的东西可以被整个页面访问。直到服务器关闭,定义的变量才会销毁

<% Java代码%>			就和平常Java代码一样。。网页关闭后就被销毁了

注释

HTML注释不会显示在网页中,但是查看源代码能看到

jsp注释:// 和 /* */ , 查看网页源代码看不到

<%-- --%>

利用html注释和jsp语句,能生产动态注释

动作标识

<jsp:include>  和include有点像
可以导入静态文件或动态文件

<jsp:include page = "路径" />		路径也可以用jsp表达式。

使用include时,被插入的文件会原封不动的插入到包含页,然后编译成一个文件,所以说不能有重名变量
使用<jsp:include>时,被jsp会分别对不同的文件进行编码,所以说不同文件内的同名对象不影响
用法:
	只需要将<%@ include file = "NewFile1.jsp" %>
	换成<jsp:include page = "NewFile1.jsp" /> 即可

内置对象

不需要实例化就能用,总共九个

request
包含的是客户端向服务器发送的请求

在之前学习HTML表格的时候就说要给每个控件设置一个名字,在这里就能体现出名字的用途了

当输如参数提交页面后,网址后面会多个?,然后后面跟的是每个属性的名字和属性值,不同属性会被&隔开
在这里可以用request接收,返回的是一个字符串。

举例:www.qwert.com?qwe=hhx&asd=hpp
<%
	request.setCharacterEncoding("utf-8");			设置request对象的编码格式为utf-8
	request.getParameter("qwe")
	request.getParameter("asd")
	这样就可以接收hhx和hpp了
	如果指定的名字不存在,则返回nul,如果名字存在,但是没有值,则返回空字符串
	
	获取复选框,返回的是一个字符数组,然后需要遍历输出里面的内容
	request.getParameterValues("")
%>
在不同的jsp页面之间传递信息
	request.setAttribute(String name , Object obj)
	request.getAttribute(Object obj)

cookie 的作用是标识用户身份,记录用户名和密码 , 跟踪重复用户
getCookies()  获得所有的cookie对象的集合
getName()   获得指定名称的cookie
getVakue()  获得cookie的值
将一个cookie对象发送到客户端使用 response.addCookie()

获取客户端信息
getRequestURL()		获得发出请求字符串的客户端的地址
getRemoteHost()		获得客户端主机名
getRemoteAddr()		获得客户端IP地址
getServerPort()		获得服务器端口号,8080之类的

response

实现网页的重定向,用法:可以设置一个if语句,用来检测输入内容的正确性,然后跳转到其他网页或者报错
	response.sendRedirect("String path")				
	response.sendError(400,"用户名或密码错误,登录失败!"); 指定报错内容

禁用缓存:
	response.setHeader("Cache-Control" , "no-store");
	response.setDateHeader("Expires" , 0);
解析:默认情况下,浏览器会对显示的网页内容进行缓存,这样,当用户再次访问网页时能加快访问速度,我们可以禁用这个缓存。

设置页面自动刷新:
	response.setHeader("refresh" , "10");		网页10秒刷新一次

定时跳转网页
	response.setHeader("refresh" , "10;URL=https://www.csdn.net/");

session

session是较常用的内置对象之一,比request对象的作用范围更大。一个用户一个单独的session对象

设置对象:
	session.setAttribute(String name , Object obj)
		name为起的名字 , obj为要保存的内容

获得对象:
	session.getAttribute(String name)		返回值为Object类型

移除对象:
	session.removeAttribute(String name)

销毁session:
	session.invalidate();

session对象的生命周期一般来说是20~30分钟。也可以自己设定
	session.setMaxInactiveInterval(1000);    设置寿命为1000

application

服务器启动时创建,服务器停止时销毁。当application对象没被销毁时,所有用户都可以共享该对象。类似于全局变量

out

out.print("");			
out.println();  
	println会多输出一个换行符,但是呢在html页面表现不出来,需要使用HTML文本属性white-space:pre装饰一下。

你可能感兴趣的:(Javaweb)