JSP

JSP

jsp是服务器技术 java server pages

JSP,EL表达式的入门(要用)

Servlet/JSP 是两种动态的web资源的两种技术。

使用Servlet生成HTML的页面

response.getWriter("<form action='' method='post'>")
response.getWriter("<input type = 'text' name='username'>");

JSP简介

java server pages	java服务器端的的网页们,是在服务器端执行的
JSP不仅可以写html+java代码+jsp自己的代码
jsp的运行原理(****):jsp -- 翻译成Servlet -- 编译 -- 访问

JSP的脚本元素(jsp可以编写java代码)

<%!   %>	:定义类,定义变量,定义方法(不常用)	成员变量
<%=   %>	:输出语句(输出到页面,不能有分号)
<%	  %>	:定义变量,语句		局部变量在server方法里面

EL快速入门

获取域对象中的内容	request.setAttribute("xx","yy");
${xx}

两个会话技术

会话:打开浏览器,可以访问web资源。多次访问web资源,关闭浏览器,整个过程为一次会话

例子:
购买商品
用户点击超链接通过了一个servlet购买了一些商品,程序应该保存用户购买的商品
以便于用户点结账servlet时,结账servlet可以得到用户商品为用户结账

把商品存入到ServletContext获取request域中呢?

cookie

显示上次的访问时间

第一次访问,输出欢迎,在服务器端,记录当前的时间,把当前的时间通过cookie回写到浏览器
	判断是否是第一次访问呢?
		通过指定名称来查找,如果没找到,就是第一次访问

	回写到浏览器
		 void addCookie(Cookie cookie)  Cookie(String name, String value) 
	
	获取cookie的内容
		Cookie[] getCookies()
	

第二次访问,输出上次访问时间,获取时间,可以把时间显示到页面上,记录当前时间,再把回写到
浏览器,输出上次的访问时间

Cookie的api
	构造方法	Cookie(String name, String value)
	String getName()	获取cookie的名称
	String getValue()  获取cookie的值
	
	void setMaxAge(int expiry) 	:设置有效时间
		失效的cookie		setMaxAge(0);	前提条件:设置有效路径(和之间设置过相同)			

	void setPath(String uri) 	:设置有效路径
		默认的路径()
			配置 /last	默认路径	/day11
			配置	/servlet/last	默认路径	/day11/servlet

	void setDomain(String pattern)	:设置有效域名
		www.sina.com.cn
		sports.sina.com.cn
		xxx.sina.com.cn
		设置有效域名	setDomain(".sina.com.cn")

会话级别的Cookie:默认保存再浏览器内存中
持久的cookie:把cookie保存早磁盘上,setMaxAge()

显示用户上次访问过的商品信息(需求)

浏览记录

	* 1.获取请求的参数
	 * 2.获取cookie,通过名称(自己指定)查找cookie
	 * 3.如果cookie==null,第一次访问
	 * 		如果是第一次访问,创建cookie,回写浏览器
	 * 4.如果cookie!=null,不是第一次访问
	 * 		如果不是第一次访问,说明我的cookie中已经存在id
	 * 			判断,当前id是否已经存在cookie的中value
	 * 			如果存在,不用操作
	 * 			如果不存在,在后面追加(product = 1,2)
	 * 5.重定向商品页面

session(服务器端)

cookie基于客户端,不安全,并且有大小和个数的限制
服务器可以为每个用户浏览器创建一个会话对象(session对象),一个浏览器独占一个session对象(默认情况)

session域对象,范围一次会话范围,存个人相关的数据。
	 void setAttribute(String name, Object value) 
	 Object getAttribute(String name) 

	 String getId()  
	 void invalidate() 3

完成简单的购物车

购物车	Map<String,Integer> cart 	把购物车存入seesion中

获取数据
判断是否是第一次访问  session.getAttribue("cart");
	如果是第一次访问,cart创建一个购物出,放入商品的名称和数量

	如果不是第一次访问,cart!=null,判断是否包含该商品?
		如果包含,数量拿出来,++,放回去,存入seesion中

		如果不包含,正常放入到购物车中,存入seesion中

session的追踪

session.getId()

session的创建和销毁

第一次访问资源,调用request.getSession(),常见session

销毁:

非正常关闭服务器
session的过期,默认是30分钟
<session-config>
	<session-timeout>30</session-timeout>
</session-config>
调用session.invalidate()		手动销毁session

session的域对象

ServlerCOntext:		代表整个web应用,数据库链接
session				一次会话,存放个人的信息
request				一次请求,存放错误的处理

jsp的设置

设置jsp文件的打开方式:window-选项--General--Editors--文件的管理--选择MyEclipes JSP Editor --default

设置编码windows--搜索jsp--找到utf-8

JSP页面注释

HTML的注释		全程存在
JAVA的注释		之间都存在,在html阶段不存在
jsp注释	<%-- JSP的注释--%>		只存在jsp文件阶段,以后就不存在了

JSP指令元素

语法:<%@ 指令元素 属性名=属性值 %>
page	设置jsp的属性
	注意:import属性可以出现多次。其他属性只能执行一次
	属性:
		language	:jsp文件允许嵌入的语言。只支持一种语言java
		extends	:jsp翻译成Servlet文件,servlet继承的一个类,默认
				  JspHttpBase
		*session	:默认值是true,可以直接使用session。设置false,
					不能直接使用
		*import	:引入jar包(使用多次)
		buffer	:设置缓冲区的大小		默认8kb
		aotoFlush	:设置默认刷新缓冲区(不要修改)
		errorPage:	指定错误页面
		isErrorPage:	设置值,可以是exception对象
		*contentType:	:服务区端输出所有类容采用的编码
		*pageEncoding	:jsp翻译成Servlet文件时采用的编码
		*isELIgnored	:是否忽略EL表达式i(false,不忽略,true,
						忽略)


include	包含页面(页面布局)
	语法:<%@ include file="包包含文件的地址(静态包含)" %>
		可以把多个页面放在一个页面中
		静态包含的原理:body.jsp->body_jsp.java
			在翻译成body_jsp.java之前,把全部内容都复制在一起
taglib	引入标签库文件
	语法:<%@ taglib%>
	属性	
		uri:引入标签库的名称
		prefix:标签库的前缀名

配置全局的错误页面

在web.xml中配置
 <error-page>
  	<error-code>404</error-code>
  	<location>/jsp/404.jsp</location>
 </error-page>

 <error-page>
  	<error-code>500</error-code>
  	<location>/jsp/500.jsp</location>
</error-page>

JSP的内置对象(9个)

request	respinse	session	apolication out pageContext	page
config	exception

内置对象			真实对象				方法
request			HttpServletRequest	setAttribute()	getAttribute()
response		HttpServletResponse	addCookie()	getWriter()
session			HttpSession			setAttribute()	getAttribute()
application 	ServletContext		setAttribute()	getAttribute()
config			ServletConfig		getInitParameter() getInitParameterNames()

exception		Throwable			getMessage()
	和异常有关
	前提条件:isErrorPage="true"
page			Object				(不使用)
	当前页面的对象
out				JspWriter			write()	print()
	JspWriter(缓冲区也要先写入response.getWriter()的缓冲区中)	
	<!-- BBBB HELLO AAA CCCC -->
	<%= "HELLO"%>
	<% out.print("AAA");%>
	<% response.getWriter().print("BBBB")%>
	<% out.print("CCCC")%>
pageContext(域对象)		PageContext			getXXX()
	是一个域对象
		自己存取值
		向其他的域中存取值
			setAttribute(String name,Object value,int scope)
			getAttribute(String name,int scope)
			findAttribute(String name)
	
	可以获取其他8个对象	
		编写框架或者通用性较高的代码。

在jsp的时候(4个域对象)

ServletContext	整个web应用
session			一次会话
request			一次请求
pageContext		当前页面

jsp的标签(jsp的动作)

<jsp:forward>:转发
	属性:page	要转发的页面
<jsp:include>:页面的包含(动态包含)
	属性: page	包含的页面
		原理:自己编译自己的文件,拿到java文件后在组合在一起
<jsp:para>:	传递参数
	属性:name	参数名称	value	参数的值

	
把数据封装在JavaBean中(jsp页面中完成)
		<jsp:useBean>
		<jsp:useBean id="u" class="cn.itcast.bean.User"></jsp:useBean>
		<jsp:setProperty property="username" name="u"/>
		<jsp:setProperty property="password" name="u"/>
		
		<jsp:getProperty property="username" name="u"/>
		<jsp:getProperty property="password" name="u"/>
		<jsp:setProperty>
		<jsp:getProperty>

内省(Introspector)

通过内省技术可以访问bean类的方法
基于反射

使用BeanUtils工具类

导包:

commons-beanutils-xxxxx.jar
commons-logging-xxxxx.jar

默认把字符串转换成日期类型
编写一个类,实现Converter接口,重写给方法。把字符串转换为日期
在封装之间进行注册。ConvertUtils.register(Converter converter,class clazz)

EL表达式

语法

${}

获取(域对象中)数据

<%
	pageContext.setAttribute("name", "李四");
	request.setAttribute("name", "张三");
%>


${ requestScope.name }

<h4>域中数组的值</h4>
<%
	String[] arrs = {"张三","李四","王五","赵六"};
	request.setAttribute("arrs", arrs);
%>
${ arrs[2] }

<h4>域中的集合的值</h4>
<% 
	List<String> list = new ArrayList<String>();
	list.add("a");
	list.add("b");
	list.add("c");
	request.setAttribute("list", list);
%>
${ list[1] }

<h4>域中Map集合的值</h4>
<%
	Map<String,String> map = new HashMap<String,String>();
	map.put("a","aa");
	map.put("b","bb");
	request.setAttribute("map", map);
%>

${map.b }
<!-- 特殊字符	${map["b.c"]} -->
<!-- 获得域对象的值 $uList[2].username} -->

逻辑运算

<h4>EL的运算</h4>
<%
	request.setAttribute("n1", 10);
	request.setAttribute("n2", 10);
	request.setAttribute("n3", 10);
	request.setAttribute("n4", 10);
%>

${n1+n2 }

<h4>关系运算</h4>
<h4>大于</h4>
${ n1 > n2 }	${ n1 gt n2 }

<h4>小于</h4>
${ n1 < n2 }	${ n1 lt n2 }

<h4>等于</h4>

${ n1==n2 }		${ n1 eq n2 }

<h4>不等于</h4>
${ n1!=n2 }		${ n1 ne n2 }

<h4>大于等于</h4>
${ n1>=n2 }		${ n1 ge n2 }

<h4>小于等于</h4>
${ n1<=n2 }		${ n1 le n2 }

<h3>逻辑运算</h3>
<h4>与</h4>
${ n1 > n2 && n3>n4 }		${ n1 > n2 and n3>n4 }

<h4>或</h4>
${ n1 > n2 || n3>n4 }		${ n1 > n2 or n3>n4 }

<h4>非</h4>
${ !(n1 > n2)  }		${ not(n1 > n2) }

获取WEB开发中的对象

pageScope
requestScope
sessionScope
application

param	获取请求参数			getParameter()
	${ param.username }  当表单提交后
paramValues	获取请求的参数	getParameterValues()

header
headerValues

initParam		获取全局的初始化参数可以去web.xml里面配置
cookie		获取cookie
	${cookie.last.value}

pageContext
	${pageContext.request.remoteAddr }		
	//比较pageContext.getRequest().getRemoteAdder

调用java的方法

JavaBean

什么是JavaBean?

定义
	必须要有一个无参的构造方法

	属性私有化

	私有化的属性必须通过public 类型的方法暴露给其他程序,并且方法的命名
	也要遵循一定的规范(getXXX() setXXX())

作用:封装数据
标题基于SpringBoot+Vue的学生交流互助平台研究AI更换标题第1章引言介绍学生交流互助平台的研究背景、意义、现状、方法与创新点。1.1研究背景与意义分析学生交流互助平台在当前教育环境下的需求及其重要性。1.2国内外研究现状综述国内外在学生交流互助平台方面的研究进展与实践应用。1.3研究方法与创新点概述本研究采用的方法论、技术路线及预期的创新成果。第2章相关理论阐述SpringBoot与Vue框架的理论基础及在学生交流互助平台中的应用。2.1SpringBoot框架概述介绍SpringBoot框架的核心思想、特点及优势。2.2Vue框架概述阐述Vue框架的基本原理、组件化开发思想及与前端的交互机制。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue在学生交流互助平台中的整合方式及优势。第3章平台需求分析深入分析学生交流互助平台的功能需求、非功能需求及用户体验要求。3.1功能需求分析详细阐述平台的各项功能需求,如用户管理、信息交流、互助学习等。3.2非功能需求分析对平台的性能、安全性、可扩展性等非功能需求进行分析。3.3用户体验要求从用户角度出发,提出平台在易用性、美观性等方面的要求。第4章平台设计与实现具体描述学生交流互助平台的架构设计、功能实现及前后端交互细节。4.1平台架构设计给出平台的整体架构设计,包括前后端分离、微服务架构等思想的应用。4.2功能模块实现详细阐述各个功能模块的实现过程,如用户登录注册、信息发布与查看、在线交流等。4.3前后端交互细节介绍前后端数据交互的方式、接口设计及数据传输过程中的安全问题。第5章平台测试与优化对平台进行全面的测试,发现并解决潜在问题,同时进行优化以提高性能。5.1测试环境与方案介绍测试环境的搭建及所采用的测试方案,包括单元测试、集成测试等。5.2测试结果分析对测试结果进行详细分析,找出问题的根源并
内容概要:本文详细介绍了一个基于灰狼优化算法(GWO)优化的卷积双向长短期记忆神经网络(CNN-BiLSTM)融合注意力机制的多变量多步时间序列预测项目。该项目旨在解决传统时序预测方法难以捕捉非线性、复杂时序依赖关系的问题,通过融合CNN的空间特征提取、BiLSTM的时序建模能力及注意力机制的动态权重调节能力,实现对多变量多步时间序列的精准预测。项目不仅涵盖了数据预处理、模型构建与训练、性能评估,还包括了GUI界面的设计与实现。此外,文章还讨论了模型的部署、应用领域及其未来改进方向。 适合人群:具备一定编程基础,特别是对深度学习、时间序列预测及优化算法有一定了解的研发人员和数据科学家。 使用场景及目标:①用于智能电网负荷预测、金融市场多资产价格预测、环境气象多参数预报、智能制造设备状态监测与预测维护、交通流量预测与智慧交通管理、医疗健康多指标预测等领域;②提升多变量多步时间序列预测精度,优化资源调度和风险管控;③实现自动化超参数优化,降低人工调参成本,提高模型训练效率;④增强模型对复杂时序数据特征的学习能力,促进智能决策支持应用。 阅读建议:此资源不仅提供了详细的代码实现和模型架构解析,还深入探讨了模型优化和实际应用中的挑战与解决方案。因此,在学习过程中,建议结合理论与实践,逐步理解各个模块的功能和实现细节,并尝试在自己的项目中应用这些技术和方法。同时,注意数据预处理的重要性,合理设置模型参数与网络结构,控制多步预测误差传播,防范过拟合,规划计算资源与训练时间,关注模型的可解释性和透明度,以及持续更新与迭代模型,以适应数据分布的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值