城管希课堂之jsp

jsp(java server page)

服务器动态web开发技术 jsp = html + servlet

html:静态内容
servlet:适合编写java逻辑代码

jsp:适合编写输出动态内容,但不适合编写java逻辑


jsp运行原理

浏览器访问服务器上的jsp页面

最终也是访问的一个.class文件

服务器 

jsp页面->翻译成.java文件->编译成.class文件


jsp是如何运行java代码的?

jsp是如何运行的?

jsp是如何将数据显示到浏览器上的?


jsp在翻译成,java文件时 会将java小脚本中的代码直接编译到 service 方法中

HTML标签 是由 out对象 写回到浏览器中

jsp和serlet 最佳实现方式


servlet: 获取参数 处理逻辑 请求分发

jsp:html页面 数据回显


小脚本<% java代码%>

显示数据<%= %>

 <%! %> 表示在类中定义全局成员,和静态块。


jsp的三个指令

session

errorPage: 如果页面中有错误,则跳转到指定的资源。
isErrorPage: 是否创建throwable对象。默认是false;
contextType: 等同于response.setContextType("text/html;charset=utf-8");

Include

静态包含

编译成.java问价时 直接把两个界面 编译成一个.java文件 输出了两个html标签

<%@ include file="/5.jsp" %>


动态包含

当读取到动态包含时的那个页面才会被编译成.java文件

<jsp:include page="/5.jsp"></jsp:include>


两者的区别:翻译的时间段不同
前者:在翻译时就把两个文件合并
后者:不会合并文件,当代码执行到include时,才包含另一个文件的内容。

原则:能用静的就不用动的。


taglib

作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。
需要导入 jar 包
jstl.jar standard.jar
https://mvnrepository.com/

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 


jsp的6个动作

<jsp:include > 动态包含
<jsp:forward> 请求转发
<jsp:param> 设置请求参数
<jsp:useBean> 创建一个对象
<jsp:setProperty> 给指定的对象属性赋值

<jsp:getProperty> 取出指定对象的属性值


jsp的9哥内置对象

request
response
session
application
exception  获取异常信息 默认是关上的
page 当前servlet实例 this
config
out

pageContext 指当前页面 域对象 然并卵

scpoe的值:
PageContext.PAGE_SCOPE 
PageContext.REQUEST_SCOPE 
PageContext.SESSION_SCOPE 

PageContext.APPLICATION_SCOPE

findAttribute(String name); 

自动从page request session application依次查找,找到了就取值,结束查找。


实际开发使用的域对象

PageContext : pageConext 存放的数据在当前页面有效。开发时使用较少。
ServletRequest: request  存放的数据在一次请求(转发)内有效。使用非常多。
HttpSession: session 存放的数据在一次会话中有效。使用的比较多。如:存放用户的登录信息

ServletContext: application 存放的数据在整个应用范围内都有效。因为范围太大,应尽量少用。


EL表达式 expression language 表达式语言

要简化jsp中java代码开发

它不是一种语言,是jsp中获取数据的一种规范

${www}表示全域查找name="www"的值

并且输出到网页上 内部调用pageContext.findAttribute("www")方法

从小到大 进行查找 当额米有从域中查找到值的时候 什么都不显示 


el表达式堆空值的显示结果 不管是null还是没有内容 都不会报错 真正有值才会显示(容错性高)

判断控制的方法 返回true false 

${empty str1}

支持三目运算

${empty str1 ?"前":"后"}

男<input type="radio" name="sex" value="nan" ${name=="nan" ? "checked='checked'":""}>
女<input type="radio" name="sex" value="nv" ${name=="nv" ? "checked='checked'":""}>

el表达式 隐式对象


<%
		// 利用pageContext对象 向各个域中保存值
		pageContext.setAttribute("xxx","pageContext", PageContext.PAGE_SCOPE);
		pageContext.setAttribute("xxx","request", PageContext.REQUEST_SCOPE);
		pageContext.setAttribute("xxx","session", PageContext.SESSION_SCOPE);
		pageContext.setAttribute("xxx","application", PageContext.APPLICATION_SCOPE);
	%>
	<!-- 使用隐式对象 指定域查找对应的值 -->
	${requestScope.xxx}
	${sessionScope.xxx}
	${pageScope.xxx}
	${applicationScope.xxx}
	
	<form action="${pageContext.request.contextPath}/13.jsp" method="post">
		账号:<input type="text" name="username"><br/>
		密码:<input type="text" name="password"><br/>
		唱歌:<input type="checkbox" name="hobby" value="sing">
		球球:<input type="checkbox" name="hobby" value="ball"><br/>
		<input type="submit" value="提交">
	</form>

param ${param.userName } request.getParamemter("userName");

paramValues


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值