JSP、EL表达式、JavaBean

一、JSP

1.三大指令

1.指令:配置JSP页面的属性或者导入一些额外的内容。
2.格式:

<%@ 指令名称  属性名=“属性值”%>

3.分类:

page指令:配置JSP页面的相关属性
include指令:静态包含
taglib指令:导入额外的内容
(1).page指令
<%@page 属性名="属性值" %>
		contentType="text/html; ISO-8859-1"响应编码  
        language="java"指定JSP页面使用的语言,只有一个值java
        pageEncoding="utf-8"设置页面编码 
        *设置jsp文件的编码
        *告诉浏览器页面使用的编码格式
        import=""导包 
        autoFlush="true"自动刷新 
        buffer="8kb"缓冲区的大小
        errorPage="505.jsp"指定错误页面,当页面发生异常时,指定跳转的页面
        isErrorPage="true"是否为错误页面,如果是就可以用JSP的一个内置异常对象exception

可以在web.xml中统一来配置整个项目的错误页面

<error-page>
        <error-code>500</error-code>
        <location>500.jsp</location>
        <error-code>404</error-code>
        <location>404.jsp</location>
    </error-page>
(2).include指令
<%@include file="  "%>静态包含

静态包含:一个页面可以把另一个页面包含进来。通过静态代码块,不会为包含进来的页面单独生成一个Java类。包含后只会存在一个.class文件

(3).taglib指令

导入额外的内容,第三方标签库jar包,比如我们经常使用的c标签

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2.六个动作标签

动作标签:是为了替换JSP脚本的书写。简化书写,提高可读性。
动作标签是JSP内置的,可以直接使用。

创建对象
<jsp:useBean id="user" class="Demo1.User">
</jsp:useBean>    使用一个ID和一个给定作用范围和同一个ID的JavaBean相关联
设置JavaBean的属性值
<jsp:setProperty name="user" property="username" value="zhangsan"></jsp:setProperty>
 <jsp:setProperty name="user" property="password" value="123456"></jsp:setProperty>

内省:通过字段名称,找到对应的setter和getter方法。
name对应的是setName方法

获取JavaBean的属性值
<jsp:getProperty name="user" property="username"></jsp:getProperty>
 <jsp:getProperty name="user" property="password"></jsp:getProperty>
动态包含
<jsp:include page="register.jsp"></jsp:include>
请求时文件包含
会生成多个.class字节码文件
转发:跳页面
<jsp:forward page="login.jsp"></jsp:forward>
<jsp:forward page="WEB-INF/home.jsp"></jsp:forward>
请求WEB-INF目录下的文件时,WEB-INF前面的/不用写
携带参数
<jsp:forward page="WEB-INF/home.jsp">
  <jsp:param name="username" value="张三"></jsp:param>
  <jsp:param name="password" value="123456"></jsp:param>
</jsp:forward>
中文乱码问题:因为服务器默认采用的是ISO-8859-1,所以将页面编码设为pageEncoding="ISO-8859-1",就不会有中文乱码问题了。
3.九个内置对象

内置对象:在jsp转换后的.java文件的service方法中声明好的对象。在jsp中可以直接使用。

(1).四个域对象
  application:ServletContext全局域对象
  session:HttpSession
  request:HttpServletRequest
  pageContext:pageContext(页面域)在一个JSP页面上共享数据
(2)
  response:HttpServletResponse响应对象
  out:JspWriter输出对象
  config:ServletConfig配置对象
  page对象:this
(3)异常对象
exception:当页面为error-page时,会有exception异常对象
  • pageContext:
    1.是个域对象:页面域
    2.可以获取其他八个内置对象:可以在非jsp环境下使用其他的内置对象
  • out与response.getWriter()
    在使用对象向页面输出信息时,采用out.

二、EL表达式

1.EL表达式:JSP内置的一种表达式语法。主要用来替换<%= %>语法。
2.作用

1.取出域中的数据
2.执行运算
3.获取常见的web对象
4.调用Java方法

3.格式:${el表达式}

1.使用EL取出域中的数据

(1).获取简单数据

<%--往4个域对象中存数据--%>
<%
    pageContext.setAttribute("pData","ppp");
    request.setAttribute("rData","rrr");
    session.setAttribute("sData","sss");
    application.setAttribute("aData","aaa");
%>
<%--取出数据--%>
${pData}
${rData}
${sData}
${aData}
<%--如果域中的数据没有找到,就以空串展示--%>
${ppData}
${rrData}
${ssData}
${aaData}
<%--如果键相同,就先从最小的域中取,取到就展示--%>
${Data}
${Data}
${Data}
${Data}
<%--可以使用这几个对象,来区分到底是哪个域中的数据--%>
${pageScope.Data}
${requestScope.Data}
${sessionScope.Data}
${applicationScope.Data}

(2).获取复杂数据

<%--获取数组中的数据--%>
<%
    request.setAttribute("arr",new String[]{"aa","bb","cc"});
%>
${arr[0]}
${arr[1]}
${arr[2]}
<%--获取集合中的数据--%>
<%
    ArrayList list = new ArrayList();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");
    request.setAttribute("list",list);
%>
${list[0]}
${list[1]}
${list[2]}
<%--获取双链集合中的数据--%>
<%
    HashMap<String, String> map = new HashMap<>();
    map.put("username","张三");
    map.put("password","123456");
    request.setAttribute("map",map);
%>
${map.username}
${map.password}
<%--获取对象中的数据--%>
<%
    User user = new User();
    user.setUsername("张三");
    user.setPassword("123456");
    request.setAttribute("users",user);
%>
${users.username}
${users.password}
2.EL表达式是支持运算的

四则运算符:关系运算符、逻辑运算符

${100+200*2}
${2>1?2:1}//三元运算符

注意:
+:只能进行加法运算,字符串形式数字可以进行加法运算。
empty:判断一个容器的长度是否为0,还可以判断一个对象是否为空。${empty 域中的对象的名称}
not empty:对象不为空,长度不为0.

<%
    User user = new User();
    user=null;
    request.setAttribute("user",user);
%>
${empty user}
${not empty user}
3.EL表达式支持调用Java的方法
<%
    HashMap map = new HashMap();
    map.put("username","张三");
    map.put("password","123456");
    request.setAttribute("map",map);
%>
${"abc".length()}
${map.get("username")}
${map.get("password")}
4.通过EL表达式动态获取项目路径

在jsp页面获取项目名称

${pageContext.request.contextPath}
5.EL的11个内置对象
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
initParam
cookie
  • cookie内置对象
Cookie ucookie = new Cookie("username", "张三");
Cookie pcookie = new Cookie("password", "123456");
        response.addCookie(ucookie);
        response.addCookie(pcookie);

获取名称为username和password的cookie的value值

<%
    Cookie[] cookies = request.getCookies();
%>

${cookie.username.value}
${cookie.password.value}

获取jsession的值

${cookie.JSESSIONID.value}

三、JavaBean

JavaBean:符合特定规范的Java类
JavaBean:一种封装数据的类

1.JavaBean的规范

这个类实现了serializable无序化接口;
这个类必须是公共的;
成员变量必须私有;
必须提供无参构造;
必须提供get()、set()方法。

2.JavaBean用来封装参数
  • 分别获取各个表单项提交的参数
  • 创建JavaBean
  • 调用JavaBean的set方法设置
			request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            //获取请求参数
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            //把数据封装起来
            User user = new User(username,password);
  • 调用JavaBean的get方法取出数据
		//取出封装数据里的参数,在数据库里面进行查询
        String username = user.getUsername();
        String password = user.getPassword();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值