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...
语句块:多条语句 {...}
函数:提供一种功能,描述一种行为
***函数名字 就是 指针
返回值 名字(参数) {...}