11-12、JSP
内容:
JSP是由Sun公司制定的,一种用于简化Servlet开发的,服务器端动态页面技术的组件规范。
JSP是Java Server Page的缩写
Jsp执行原理:
add.jsp-----翻译---->add_jsp.java-----编译----->add_jsp.clsss----JVM--->执行
第二次访问无改动直接执行,如果jsp有改动,则重新编译编译执行

HttpJspBase继承了HttpServlet
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
JSP页面组成:html、指令、java注释、java代码
Java代码:
JSP脚本:
<% %>
JSP表达式:
<%= %>
JSP声明:
<%! %>
JSP注释仅在JSP页面中可见,在Java代码,浏览器,HTML中不可见:
<%-- --%>

Html注释可以被浏览器看到
Java注释可在JSP页面看到
JSP指令是设置整个JSP页面中相关属性的指令
分类:
page指令
include指令
taglib指令(后续学习)
el 表达式语言 ${param.name} ${list} ${cookie.name.value} ${sessionScope.loginlist[0].password}
jstl javapage标准标签库
循环(for for if 动态显示下拉框)
<c:forEach>
<tr><td>循环表格</td></tr>
</c:forEach>
选择
<c:choose>
<c:when test="条件" >${list[0].name}</c:when>
<c:otherwise>其他</c:otherwise>
</c:choose>
判断
<c:if test="条件">
page指令是用于设置页面全局属性的JSP指令。


include 指令是静态包含文本资源的jsp指令。
JSP内置对象是预先定义的,在JSP页面脚本中可以直接使用的对象
【HttpServletRequest request 请求对象】
【HttpServletResponse response响应对象】
PageContext pageContext 页面上下文对象
【HttpSession session 会话对象】
ServletContext application 应用程序对象、唯一的,最大的共享的对象
ServletConfig config 配置对象
JspWriter out 输出对象
Object page = this 当前页面本身
exception 异常对象
作用域对象
作用域对象:生命周期有一定的范围,在这个范围内能访问的jsp内置对象
pageContext : jsp页面提供,只能在jsp页面内使用
request : 请求域,请求范围内有效
session : 会话域,从浏览器打开访问服务器,中间发送无数次的请求和响应,知道关闭浏览器的过程
application : 容器启动创建,容器关闭时销毁
存数据: setAttribute(key,value)
取数据: getAttribute(key)
request是封装了客户端请求信息通过HTTP协议传送到服务器的
JSP内置对象。
作用:
1、可以设置请求编码:req.setCharacterEncoding("utf-8");
2、可以接收浏览器的请求数据: req.getParameter("参数名");
3、可以作为域对象存取数据:
(1) 存: setAttribute(String key,Object value)
(2) 取: getAttribute(String key)
(3) 移除:removeAttribute(String key)
4、转发
转发是一个web组件(jsp/servlet)将未处理完的请求转交给另一个web组件继续处理的过程。


HttpServletResponse代表服务器端响应
作用:
1、设置响应编码:resp.setContentType("text/html;charset=UTF-8");
2、可以响应网页并且向网页输出数据: resp.getWriter().print(数据)
3、重定向:resp.sendRedirect("SelectServlet");

常见报错信息:

通过报错信息可以看到,对应行得属性有问题
- 属性在实体类中找不到,或者属性得get方法有参了
- 属性在实体类中首字母大写了

属性不可读,检查该属性得get方法有没有参数,把参数去掉

浙公网安备 33010602011771号