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

JSP基础知识总结

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

JSP基础知识总结

JSP学习笔记 1.简介

JSP:Java Server Page,是Java Web服务器端动态资源。

2.相关配置

文件—>设置—>(搜索)编码—>都改成UTF-8

3.注释

显示注释:能在客户端(网页源代码中)查看的注释

隐式注释:不能在客户端(网页源代码中)查看的注释

在jsp中自己的注释<%----%>

快捷键也为

Ctrl+/


4.Scriptlet

  1. 定义局部变量—生成的代码在servlet中的service的方法体中
  2. 声明全局变量—生成的代码在servlet的方法体中
  3. 输出表达式,可以输出变量或字面量—生成的代码在servlet的类体中
<%--第一种:Java脚本段,可以写Java的代码,定义局部变量,编写语句等--%>
<%//定义局部变量
    String str= "Hello jsp";
    //输出内容到控制台
    System.out.println(str);
    //输出内容到浏览器
    out.print(str);
    //输出全局变量
    out.write("全局变量"+num);
%>
<%--第二种:声明,声明全局变量,方法,类等--%>
<%!
int num =10;
%>
<%--第三种:输出表达式,可以输出变量或字面量--%>
<%=str%>

5.小问题—jsp中out.println报错

  • 应将Tomcat关联到File->Project Structure->modules->Dependencies

如图

选择library后点击确定

选择tomcat后点击add selected 再点击确定

6.include的静态包含

在说包含之前,先来说说

1.JSP指令标签

2.include静态包含

格式:<%@include file="要包含的页面地址"%>

eg:

主文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    静态包含


   <%@include file="04-head.jsp"%>
    

主体部分

<%@include file="04-foot.jsp"%>

04-head.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    头部


头部内容

04-foot.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    尾部


尾部内容

最后效果:

特点:

  1. 将内容直接替换
  2. 静态包含只会生成一个源码文件,最终的全部在ispservlet方法体中(源码文件中)
  3. 不能出现同名变量(因为最终是把文件都拼接在一起的)
  4. 运行效率高一点点,耦合度较高,不够灵活


3.include动态包含
格式: 

主文件:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    动态包含



    

主题内容

04-head.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    头部


头部内容

04-foot.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    尾部


尾部内容

最后效果:

特点:

  1. 动态包含相当于方法中的调用
  2. 动态包含会生成多个源码文件
  3. 可以定义同名变量
  4. 效率高,耦合度低

注意:当动态包含不需要传递参数时,include双标签之间不要出现任何内容,包括换行和空格

eg:

在head文件后加入空格键

运行效果:


原因:

因为当输入空格或者特殊符号时,这时候会把输入的内容看成参数

使用动态包含传递参数

<%--动态包含
    格式:
         
<%--动态包含传递参数
     
        
    
    注:name属性不支持表达式,value支持表达式
    获取参数:
    requset.getParameter(name);通过指定的参数名获取参数值
    --%>

主函数:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    动态包含



    
    

主题内容

<% int a = 1; %> <% String str = "HEELO"; %>

04-foot.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    尾部


尾部内容

<% int a = 10; //获取动态包含传递的参数 String uname = request.getParameter("uname"); String msg =request.getParameter("msg"); out.print(uname+","+msg); %>

04-head.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    头部


头部内容



7.JSP的四大域对象

验证属性范围的特点

JSP的四大域对象
  page作用域
    在当前页面跳转有效,跳转后无效
  request作用域
    在一次请求中有效,服务器端跳转有效,客户端跳转无效
  session作用域
    在一次会话中有效,服务器和客户端跳转有效
  qpplication作用域
    整个应用都有效

  JSP服务端跳转
  1.服务端跳转
  
  2.服务端跳转
  超链接跳转

(超链接跳转)主文件:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    JSP的四大域对象


    <%
  //设置page范围的域对象
  pageContext.setAttribute("name1","张三");
  //设置request对象
  request.setAttribute("name2","李四");
  //设置session范围对象
  session.setAttribute("name3","王五");
  //设置application范围的域对象
  application.setAttribute("name4","赵六");
%>
        跳转


https://blog.csdn.net/m0_63324772/article/details/06-JSP的四大域对象-02.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    JSP的四大域对象


  //获取与对象中的值
  out.print("page范围:"+pageContext.getAttribute("name1")+"
"); out.print("page范围:"+request.getAttribute("name2")+"
"); out.print("page范围:"+session.getAttribute("name3")+"
"); out.print("page范围:"+application.getAttribute("name4")+"
"); %>

运行结果:


(服务端跳转)主文件:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    JSP的四大域对象


    <%
  //设置page范围的域对象
  pageContext.setAttribute("name1","张三");
  //设置request对象
  request.setAttribute("name2","李四");
  //设置session范围对象
  session.setAttribute("name3","王五");
  //设置application范围的域对象
  application.setAttribute("name4","赵六");
%>




https://blog.csdn.net/m0_63324772/article/details/06-JSP的四大域对象-02.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    JSP的四大域对象


  //获取与对象中的值
  out.print("page范围:"+pageContext.getAttribute("name1")+"
"); out.print("page范围:"+request.getAttribute("name2")+"
"); out.print("page范围:"+session.getAttribute("name3")+"
"); out.print("page范围:"+application.getAttribute("name4")+"
"); %>

运行结果:



8.简易版用户登录功能

login.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    用户登录


    
姓名:
密码:
<%=request.getAttribute("msg")%>

index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

  
    $Title$
  
  
    

欢迎<%=session.getAttribute("uname")%>登录

LoginServlet.java

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置客户端的编码格式(防止乱码)
        req.setCharacterEncoding("UTF-8");
        //接受客户端传递的参数
        String uname = req.getParameter("uname");
        String upwd = req.getParameter("upwd");
        //判断参数是否为空
        if (uname == null ||"".equals(uname.trim())) {
            //提示用户信息
            req.setAttribute("msg", "用户姓名不能为空");
            //请求转发跳转到login.jsp
            req.getRequestDispatcher("login.jsp").forward(req, resp);
            return;
        }
        if (upwd == null||"".equals(upwd.trim())) {
            //提示用户信息
            req.setAttribute("msg", "用户密码不能为空");
            //请求转发跳转到login.jsp
            req.getRequestDispatcher("login.jsp").forward(req, resp);
            return;
        }
        //判断账号密码是否正确
        if (!"admin".equals(uname)||!"admin".equals(upwd)) {
            //提示用户信息
            req.setAttribute("msg", "登录失败");
            //请求转发跳转到login.jsp
            req.getRequestDispatcher("login.jsp").forward(req, resp);
            return;
        }
        //登录成功
        //设置登录信息到session
        req.getSession().setAttribute("uname",uname);
        //跳转到index.jsp
        resp.sendRedirect("index.jsp");
    }
}


9.EL表达式

eg:

<%=request.getAttribute("msg")%>

通过EL表达式,可以把在简单用户功能中在页面中显示的null改为空的字符串

${msg}
1.表达式的语法

当获取指定的域对象的时候

${与对象的名称.数据名称}
2.表达式的使用-获取数据 1.获取list
获取list
    获取list的size ${list.size()}
    获取list的指定下标:${list[下标]}
    注:list代表的是限域变量名
2.获取Map
获取Map
    获取Map中指定的key的value
    ${map.key}
    或者
    ${map["key"]}
    注:Map代表的是限域变量名

eg:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    表达式的使用


<%
    //list
    List list = new ArrayList<>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");
    request.setAttribute("list",list);
    //Map
    Map map = new HashMap();
    map.put("aaa","111");
    map.put("bbb","222");
    map.put("ccc","333");
    request.setAttribute("map",map);
%>

获取list

获取list的size:${list.size()}
获取list的指定下标:${list[1]}

获取Map

获取list的size:${map.aaa}
获取list的指定下标:${map["bbb"]}

3.JavaBean

4.empty

1.字符串

域对象是字符串

​ 不存在的域对象:ture

​ 空字符串:ture

​ null:ture

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    表达式的使用


<%
    request.setAttribute("str1","abc");
    request.setAttribute("str2","");
    request.setAttribute("str3",null);
%>
${empty str}
${empty str1}
${empty str2}
${empty str3}

2.List

没有长度—true

null-true

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %><%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2022/1/28
  Time: 1:36
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    表达式的使用



<%
    List list1 =new ArrayList<>();
    List list2 = null;
    List list3 = new ArrayList<>();
    list3.add(1);
    request.setAttribute("list1",list1);
    request.setAttribute("list2",list2);
    request.setAttribute("list3",list3);
%>
${empty list1}
${empty list2}
${empty list3}

3.Map

null:true

空map对象:true

<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2022/1/28
  Time: 1:36
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    表达式的使用



<%
    Map map1 = null;
    Map map2 = new HashMap<>();
    Map map3 = new HashMap<>();
    map3.put(1,2);
    request.setAttribute("map1",map1);
    request.setAttribute("map2",map2);
    request.setAttribute("map3",map3);
%>
${empty map1}
${empty map2}
${empty map3}

4.JavaBean

null:true

空对象:false

3.EL运算







JSTL学习 1.标签的使用

    JSTL的使用
    1.下载JSTL所需要的jar包
    (standard.jar和jstl.jar)
    2.在项目的web目录下的WEB-INF中新建lib目录,将jar拷进去
    3.选择“文件”————>项目结构————>模块————>依赖————>“+”————>将对应的lib目录导进去
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


    11
<%--    JSTL的使用
    1.下载JSTL所需要的jar包
    (standard.jar和jstl.jar)
    2.在项目的web目录下的WEB-INF中新建lib目录,将jar拷进去
    3.选择“文件”————>项目结构————>模块————>依赖————>“+”————>将对应的lib目录导进去
--%>



    Hello JSTL



2.if标签

格式:
    
    ...
    

注:

  1. 标签操作的一般都是域对象
  2. if标签没有else,如果想要else的效果,就需要设置两个完全相反的条件
3.条件标签

choose,when和otherwise标签

语法格式

属性

  1. choose标签没有属性
  2. when标签中只有一个test属性,必须属性
  3. otherwise标签中必须设置在最后一个when标签之后

注意:

  1. choose标签和otherwise标签没有属性,而when标签必须有一个test属性
  2. choose标签必须包含至少一个when标签,可以没有otherwise标签
  3. otherwise标签必须设置在最后一个when标签之后

4.迭带标签

语法格式

属性

eg:

(遍历主题内容多次)

如下

(循环)

如下

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

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

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