栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java-web9-JSP基础知识

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java-web9-JSP基础知识

9.JSP 9.1 jsp介绍
  • jsp:java server pages:java服务器端页面和servlet一样,用于动态web技术
  • 写jsp就像在写HTML
  • 现在的页面基本都是HTML了,静态模板技术取代了JSP
9.2 jsp和HTML区别:
  • HTML给用户提供静态数据
  • jsp页面可以嵌入java代码,给用户提供动态数据
9.3 JSP原理
  • JSP执行过程:在服务器内部工作,tomcat中有一个work目录
  • 我们使用的时idea集成的tomcat会在idea的tomcat中生成一个work目录,将正在访问的jsp页面编译为java/class文件

  • 正在访问的jsp页面被编译为java文件
  • HttpJspBase 继承了HttpServlet
  • 浏览器向服务器发送请求,无论访问什么资源,本质是访问servlet
  • jsp本质上时servlet
public void _jspInit() {
}
public void _jspDestroy() {
}
public void _jspService(HttpServletRequest request,HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {}
9.3.1 源码刨析
  • 判断请求

  • 内置对象9个

final javax.servlet.jsp.PageContext pageContext; //页面上下文
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
HttpServletRequest req
HttpServletResponse resp
ServletException  exception
  • 输出页面前增加代码,响应和对象设置
response.setContentType("text/html;charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
      			null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;
  • 上诉对象可以在jsp中直接使用
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%String name="托尼";%>
<%=name%>


  • jsp页面中,java代码会原样输出
  • 若是html代码则会转换输出到前端,是为渲染的过程
9.4 jsp基础语法
  • 普通项目转web项目

  • 此方式创建的web项目会有更新局部类功能
  • 引入jar包taglibs-standard、jstl-api

    javax.servlet.jsp.jstl
    jstl-api
    1.2

 
    taglibs
    standard
    1.1.2

  • jsp是java的一种应用,扩充了自己的一些语法,java语法对其支持

  • <%= %>等价于一个表达式,不需要;

9.4.1 jsp表达式,遵循java规则
<%--jsp表达式,将程序结果输出到客户端--%>
<%= new Date()%>
9.4.2 jsp脚本片段
<%
  String name = "zs";
%>
  • 也可以脚本片段和html代码混合使用
<%
  String name = "zs";
  out.write("name="+name+"");
%>

分割

<% out.write("name="+name+""); %>
9.4.3 jsp声明,被service方法调用
<%--jsp声明提高作用域在,源码service方法外部,servlet类中--%>
<%!
  static {
    final double PI=3.14;
  }
%>
  • jsp注释不会显示在页面上,html注释页面上依然存在
<%--jsp注释--%>

9.5 jsp指令
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.Date" %>
<%--指定错误页面,isErrorPage="true"显示的声明是错误页面--%>
<%--<%@page errorPage="error/error.jsp" isErrorPage="true" %>--%>

  • jsp脚本和jsp标签区别
<%--jsp脚本--%>
<%@include file="common/header.jsp"%>
主体
<%@include file="common/footer.jsp"%>

<%--jsp标签--%> 主体

  • 拼接引入的页面
  • 两个同名同类型变量,在jsp脚本合并的页面会冲突,但在jsp标签拼接的页面时,由于时若干个页面所以不会冲突。
9.6 jsp内置对象9个

final javax.servlet.jsp.PageContext pageContext; //页面上下文
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this; //不用
HttpServletRequest req
HttpServletResponse resp
ServletException exception

  • 使用方式:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>


    Title


<%--4大作用域--%>
<%
pageContext.setAttribute("user4","赵六");//本页面
request.setAttribute("user1","张三"); //本次请求,转发也会传输
session.setAttribute("user2","李四");//当前会话,浏览器打开到关闭
application.setAttribute("user3","王五");//当前web容器,服务器打开到关闭
%>
<%
    //设置作用域,第三个参数
    pageContext.setAttribute("user4","赵六",PageContext.SESSION_SCOPE);//当前会话,浏览器打开到关闭
%>
<%--java中不要写jsp注释等内容,会原样输出到servlet类中
pageContext域中取数据,会遵循从小到大作用域的方式查找,
类似:jvm的双亲委派机制,应用加载器中存在某个根加载器中的类,它不会即可利用应用加载器中的,他会先找扩展类的,找不到在找根加载器的,找到后从上到下加载
跨页面后,若request请求不转发,则只能从session、application作用域中取到值
--%>
<%
String user1 = (String)pageContext.findAttribute("user1");
String user2 = (String)pageContext.findAttribute("user2");
String user3 = (String)pageContext.findAttribute("user3");
String user4 = (String)pageContext.findAttribute("user4");
String user5 = (String)pageContext.findAttribute("user5");
%>
<%--用el表达式输出,null值不输出--%>
作用域中的值为:
user1===${user1}
user2===${user2}
user3===${user3}
user4===${user4}
user5===${user5}
<%--jsp表达式的输出项,null值输出--%>
user5===<%=user5%>


<%pageContext.forward("/page.jsp");

%>
  • 使用场景

request:clinet向service发送请求,产生的数据,用户使用完不用了。新闻

session:clinet向service发送请求,产生的数据,用户使用完稍后还有用。购物车

application::clinet向service发送请求,产生的数据,用户使用完稍后别的用户有用。在线人数

9.7 jsp标签,jstl标签,el表达式 9.7.1 el表达式作用${}
  • 获取数据(作用域中的数据)
  • 执行运算
  • 获取web开发的常用对象
  • 调用方法(不常用)

注意:EL表达式不需要导包 jstl才需要导包

9.7.2 jsp标签

    
    

page04页面

name==<%=request.getParameter("name")%> pwd==<%=request.getParameter("pwd")%>
9.7.3 jstl标签
  • 是一个JSP标签集合,它封装了JSP应用的通用核心功能

  • JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。

  • 为弥补html标签的不足;自定义了许多标签,可以使用,标签的功能和java代码一样

  • 根据JSTL标签所提供的功能,可以将其分为5个类别。

    • 核心标签
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    • 格式化标签
    <%@ taglib prefix="fmt" 
               uri="http://java.sun.com/jsp/jstl/fmt" %>
    
    • SQL 标签
    <%@ taglib prefix="sql" 
               uri="http://java.sun.com/jsp/jstl/sql" %>
    
    • XML 标签
    <%@ taglib prefix="x" 
               uri="http://java.sun.com/jsp/jstl/xml" %>
    
    • JSTL 函数
    <%@ taglib prefix="fn" 
               uri="http://java.sun.com/jsp/jstl/functions" %>
    

问题:服务器无法解析jstl.jar包,tomcat的lib包中缺少jstl-api-1.2.jar和standard-1.1.2.jar包

  • el表达式获取表单数据用${param.参数名}
  • c:if使用
<%--el表达式获取表单数据用${param.参数名}--%>
  • c:choose使用



    
        高于50%
    
    
        低于50%
    

  • c:forEach使用
<%String[] arrs = {"as","cv","we"};
    request.setAttribute("arrs",arrs);
    ArrayList arrayList = new ArrayList<>();
    //下标从0开始
    arrayList.add(0,"sd");
    arrayList.add(1,"sds");
    arrayList.add(2,"sdse");
    request.setAttribute("arrayList",arrayList);
%>

    
    

9.8 JavaBean
  • 实体类:

JavaBean的特性:

必须有一个无参构造

属性必须私有化

有对应的get/set方法

  • 一般和数据库表字段做映射,叫OR0M映射

ORM映射关系

表-实体类

字段-属性

行-对象

  • idea连数据库时要设置时区:serverTimezone=UTC





<% Date date = new Date(System.currentTimeMillis());%>


id==
name==
password==
email==
birthday==
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/975815.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号