语法篇·JSP基础

一、初识JSP

1.1简介

JSP(Java Server Pages),其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签。JSP是一种动态网页技术标准,也是JavaEE的标准。JSP和Servlet一样,是在服务器端执行的。JSP是在Servlet技术发展之后为了让开发者写html标签更方便而发展起来的技术,JSP实际上就是Servlet。

人们通常把Servlet作为Web应用中的控制组件来使用,只负责响应请求产生数据,并把数据通过转发技术带给jsp,而把jsp技术作为数据显示模板来使用。这样使程序结构更清晰,可读性和可维护性更高。

1.2 基础语法与指令

声明脚本(极少使用)

声明格式:<%! java代码 %>

作用:可以给翻译出来的java类定义属性和方法甚至是静态代码块,内部类等

1.声明类属性

<%!
  private Integer id;
  private String name;
  private static Map<String,Object> map;
%>

2.声明static静态代码块

<%!
  static {
    map = new HashMap<String,Object>();
    map.put("key1","猫");
    map.put("key2","狗");
    map.put("key3","羊");
    map.put("key4","牛");
  }
%>

3.声明类方法

<%!
  public int test(){
    return 12;
  }
%>

4.声明内部类

<%!
  public static class A{
    private int id = 1;
    private String name = "aaa";
  }
%>

 表达式脚本(常用)

​ 表达式脚本格式:<%=表达式%>

​ 表达式脚本的作用是:在jsp页面上输出数据

1.输出整型

<%=12%>

2.输出浮点数

<%=12.12%>

3.输出字符串

<%="我是字符串"%>

4.输出对象

<%=map%>

 表达式脚本的特点: 1. 使用的表达式脚本都会被翻译到jsp源文件的_jspService()方法中去

​ 2. 表达式脚本都会被翻译为out.print()输出到页面上

​ 3. 由于所有的表达式脚本翻译的内容都在_jspService()中,所以__jspService()方法中的对象可以直接使用

​ 4. 表达式脚本中的表达式不能以分号结束

代码脚本

​ 代码脚本格式:<%java语句%>

​ 代码脚本的作用:可以在jsp页面中编写我们自己需要的功能(java语句)

1.代码脚本—-if语句

<%
      int i=12;
      if(i==12)
        System.out.println("哈哈哈");
      else
        System.out.println("呵呵呵");
    %>

2.代码脚本—-for循环语句

<%
      for(int j = 0;j<10;j++)
        System.out.print(j);
    %>

3.翻译后java文件中_jspService方法内的代码都可以写

<%
      String name = request.getParameter("name");
      System.out.println("请求的参数为:"+name);
    %>

 代码脚本的特点: 1. 代码脚本翻译到了源文件的_jspService()方法中

​ 2. 由于代码脚本翻译的内容都在_jspService()中,所以__jspService()方法中的现有对象可以直接使用

​ 3. 代码脚本还可以由多个代码脚本块组合完成一个完整的Java语句

​ 4. 代码脚本还可以和表达式脚本一起组合使用,在jsp页面上输出数据

1.3 jsp中的三种注释

  1. html注释 <!--这是html注释--> 会被翻译到java源代码中,以out.writer输出到客户端

  2. java注释 java注释会被翻译到java源代码中\

    <%
        //单行注释
        /*多行注释*/
    %>
  3. jsp注释 <%—这是jsp注释—%> jsp注释可以注释掉jsp页面中所有代码

1.4错误界面(重要)

1.5JSP指令(网页结构)

二、JSP入门

2.1JSP九大内置对象 

jsp中的内置对象,是指Tomcat在翻译jsp页面成为servlet源代码后,内部提供的九大对象,叫内置对象

  1. request 请求对象
  2. response 响应对象
  3. pageContext jsp的上下文对象
  4. session 回话对象
  5. application ServletContext对象
  6. config ServletConfig对象
  7. out jsp输出流对象
  8. page 指向当前jsp的对象
  9. exception 异常对象(需要开启isErrorPage属性)

2.2四大域对象

​ jsp的四大域对象(可以像map一样存取数据的对象)

  1. pageContext(PageContextImpl类) 当前jsp页面范围内有效
  2. request(HttpServletRequest类) 一次请求内有效
  3. session(HttpSession类) 一次会话范围内有效(打开浏览器访问服务器,直到关闭浏览器)
  4. application(ServletContext类) 整个web工程范围内都有效(只要web工程不停止,数据都在)

四个域使用的优先顺序是:

​ pageContext ===> request ===> session ===> application

2.3 jsp中out输出和response.getWriter输出的区别  

​ response中表示响应,我们经常用于设置返回给客户端的内容

​ out也是给用户做输出使用

​ 当jsp页面中所有代码执行完成后会做以下操作:

  1. 执行out.flush()的操作,会把out缓冲区中的数据追加写入到response缓冲区末尾
  2. 执行response的刷新操作,把全部数据写给客户端

由于jsp翻译之后,底层源代码都是使用out来输出,使用一般情况下我们统一使用out来进行输出,避免打乱页面输出的顺序

​ out.write()输出字符串没有问题,输出整型有问题

​ out.print()输出任意数据没有问题(都转换为字符串后调用write输出)

在jsp页面中,可以统一使用print()进行输出

2.4JSP标签、JSTL标签、EL表达式

2.4.1EL表达式

EL表达式全称为:Expression Language,即表达式语言。

EL表达式作用为:主要是代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出,相比原生的jsp可读性更高,更简洁。

EL表达式:${ }
●获取数据
●执行运算
●获取web开发的常用对象

2.4.2JSP标签

<%--<jsp:include>--%>
<!-- jsp携带数据 -->
<jsp:forward page="/jsptag2.jsp">
    <jsp:param name="name1" value="1"/>
    <jsp:param name="name2" value="2"/>
</jsp:forward>

取出值

<%= request.getParameter("name1")%>
<%= request.getParameter("name2")%>

核心标签(掌握部分)
格式化标签
SQL标签
XML标签

JSTL常用标签

<c:if>

 c:set

作用:存值,存值到scope中

<c:choose>, <c:when>, <c:otherwise> 标签用于在众多选项中做出选择,与switch功能相同 

 <c:forEach>标签

迭代遍历元素,整合for/foreach等 Items,集合数组等对象,必为通过EL获取的集合对象 Var,每次迭代的元素对象 varStatus,迭代状态变量

<c:out>
<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>

1、 value 要输出的信息

2、 default 默认情况下输出什么 

3、 escapeXml 是否以xml格式输出注:默认为true,即像”<”,”>”这样的符号会原样输出

varStatus属性,封装遍历状态的属性变量名称 

 2.5JAVABean

JAVABean是一种用Java语言编写的可重用组件,它遵循一些规范,如有无参数的构造器,有set和get方法的属性,有事件监听器的事件等。JAVABean可以被其他Java应用程序调用,也可以被可视化的开发工具操作。JAVABean有可视化和不可视化两种类型,分别用于提供图形用户界面和处理业务逻辑等

实体类

JavaBean有特定的写法:

  • 必须要有一个无参构造
  • 属性必须私有化
  • 必须有对应的get/set方法:

一般用来和数据库的字段做映射 ORM;

ORM:对象关系映射

  • 表 —> 类
  • 字段 —> 属性
  • 行记录 —> 对象
idnameageaddress
1oi1号18温泉1
2oi2号19温泉2
3oi3号20温泉3
class people{
    private int id;
    private String name;
    private int age;
    private String address;
}
class A{
    new People(1,"oi1号",18,"温泉")
}

 2.6MVC三层架构

Model View Controller 模型、视图、控制器

Model

  • 业务处理:业务逻辑(Service)
  • 数据持久层:CRUD (Dao)

View

  • 展示数据
  • 提供链接发起Servlet请求(a,form,img…)

Controller(Servlet)

  • 接受用户的请求:(req:请求参数、Session信息…)
  • 交给业务层处理对应的代码
  • 控制视图的跳转

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟雨平生9527

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值