JSP 基础

JSP(Java Server Pages):java服务器页面 JavaEE核心规范之一
***就是一个简化的Servlet,主要解决Servlet不擅长页面展现
***是一个动态网页技术
***Servlet:不擅长页面展现

内容:java+html (java:获取动态数据,html:负责展现数据)

PHP:php+html
ASP:c#+html
JSP:java+html


1、JSP 脚本:辅助Servlet 运行
***脚本:辅助程序 js:辅助浏览器运行 富客户端技术

书写规范:
<%! 成员声明%>:声明变量、方法
<%= Java Expression%>:表达式 把值显示在浏览器上!
<% Java codes in servicemethod%>:代码块

 


2、JSP 指令:不直接产生任何可视的输出,指导JSP页面如何展现
<%@ directiveName attribueList%>
书写规范:<%@ page contentType="text/html;charset=UTF-8" language="java" %>

页面指令:page
包含指令:include 只能包含一个静态资源(不能包含jsp页面)
导入标签库指令:taglib

***JSP1.0版本:最早期、最基础、功能最强大的版本!


3、JSP 动作(标签):取代java代码
***JSP1.2版本:对JSP定位发生了变化,认为JSP 是一个页面技术,推出了很多JSP标签
***JSP1.2版本:只是一个过渡版本,功能不是太强大,后来被JSP2.0版本取代

useBean, setProperty, getProperty
include
forward
param


4、内置对象: 9种

pageContext	javax.servlet.jsp.PageContext 表示的一个页面的范围对象,在 Servlet中没有与之对应的对象
request	javax.servlet.http.HttpServletRequest 与 Servlet中 request对象没有任何区别,是同一个对象
response	javax.servlet.http.HttpServletResponse 与 Servlet中response对象没有任何区别,是同一个对象
session	javax.servlet.http.HttpSession 与 Servlet中 session对象没有任何区别,是同一个对象
application	javax.servlet.ServletContext 与 Servlet中 ServletContext对象没有任何区别,是同一个对象

page	javax.servlet.jsp.HttpJspPage 名称性概念,设置页面范围

out	javax.servlet.jsp.JspWriter 等同于 response.getWriter()
config	javax.servlet.ServletConfig Servlet 配置对象,本质就是 ServletConfig

exception	java.lang.Throwable 异常对象

5、JSP2.0:主要引入了EL+JSTL
EL 表达式:在JSP2.0中引入的一个表达式 语言 JAVAEE核心规范之一
***EL早期服务于JSTL标签,由于非常简单、实用在JSP2.0纳入规范
***提取数据而不是操作数据

EL 语法: ${...} ${stu.sname} ${stu['sname']}

EL 类型: 与Java中类型相对应的

内置对象:

pageContext 从小到大范围进行访问 一般不用

pageScope 从页面范围获取数据 与page不一样
requestScope 从请求范围获取数据 与request不一样,只能从request范围获取数据
sessionScope 从会话范围获取数据 与session不一样,只能从session范围获取数据
applicationScope 从应用范围获取数据 与ServletContext不一样,只能从ServletContext范围获取数据


param request.getParamter(name)
paramValues request.getParamterValues(name)
initParam ServletContext.getInitparameter(String name)

${pageScope.stu}<br>
${requestScope.stu}<br>
${sessionScope.stu}<br>
${applicationScope.stu}<br>

${stu}:从最小范围获取数据,如果获取到就直接返回,如果没有获取到,
再从更大的范围获取数据,,,如果在applicationScope没有获取到数据,
说明共享范围中,没有设置该数据

 

JSTL(JSP Standard Tag Library) 标签库:开源不断完善的标签库 JAVAEE核心规范之一
环境:*** standard.jar 、 jstl.jar(把以上2个文件复制到WEB-INF/lib目录下)

<c:if test="${stu.age>18&&stu.age<25}" var="flag" > 5%
大学生
</c:if>
<c:if test="${stu.age>=25}">
工作者
</c:if>
***没有else标签


<c:choose> 5%
<c:when test="${stu.age>18&&stu.age<25}" >
大学生2
</c:when>
<c:when test="${stu.age>25&&stu.age<30}" >
单身狗
</c:when>
<c:otherwise>
男人
</c:otherwise>
</c:choose>

<c:forEach>:迭代标签 cor-each循环 90%
<c:forEach var="stux" items="${stuList}" >
${stux}<br>
</c:forEach>
<hr>
<c:forEach var="stux" items="${stuList}" begin="3" end="8">
${stux}<br>
</c:forEach>

<hr>
<c:forEach var="stux" items="${stuList}" step="2" begin="3" end="8">
${stux}<br>
</c:forEach>
<hr>
<c:forEach var="stux" items="${stuList}" varStatus="status" step="2" begin="3" end="8">
${status.first}-${status.last}-${status.index}-${status.count}-${status.current}-->${stux}--->${stux['id']}---->${stux.name}<br>
</c:forEach>

  

6、MVC 架构:是一种软件开发模式,它是由控制器、视图、模型组成
***23种设计模式:都不是技术 就是一种编程技巧
***MVC:是一种开发模式,不是规范
控制器(controller): 控制层 接受请求 处理数据 响应数据 Servlet(调度)
视图(view): 视图层 展现数据 html css js jpg jsp
模型(model): 模型层 数据相关 dao service model
model:数据 数据库中的表一一对应
dao:刀层 数据访问层 直接操作数据库
service:业务层 处理业务数据(调用dao层)
***开发中都是基于MVC三层架构,但是不需要拘泥于MVC开发模式

model:领域模型 pojo vo bo po...


7、项目开发流程:
1) 需求分析: 需求分析文档 1/3--1/2
2) 建模:数据库建模 、界面设计 数据库设计文档
3) 编码:1/3--1/2
4) 测试:单元测试 性能测试 压力测试 测试文档
5) 交付:使用手册(说明书)
6) 详细设计文档:让新参与程序员 阅读文档 实现开发

员工管理系统:小练习 巩固Servlet Jsp jdbc mysql 综合开发

***异常:提供 程序出现异常的时候 经过 妥善处理 能够让程序继续执行下去 的一种机制

异常(Exception):一般是由程序人员考虑不周,导致问题发生 100/0 new FileInputStream("")
错误(Error):严重(系统)问题 程序人员不需要去关心这个问题

异常处理原则:在自己的权力和能力范围内 必须处理;否则抛出!
***严禁出现异常捕获后,不做任何处理的现象!!!

------------------------------------------------------------------------------------------------
变量: 存值
常量:本质就是变量,值不能改变 int age=20;


表达式:多个变量共同协作计算出来的一个 值
运算符:描述变量之间的关系 是由表达式派生出来的技术
***变量 就是最简单的表达式


语句:提供语境 出现了流程控制语句 if for...


语句块:多条语句 {...}


函数:提供一种功能,描述一种行为
***函数名字 就是 指针

返回值 名字(参数) {...}

 

上一篇:【面霸系列 - 1】2022年java初级面试题


下一篇:java web课设