JSP(2)

1.JSP内置对象

       JSP中的内置对象就是服务器运行的时候预先创建好的对象,都不需要我们自己创建。

JSP的内置对象一共有9个。

      

名称

类型

作用

常用方法

request

javax.servlet.HttpServletRequest

该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。

1.获取请求行信息的相关方法

2.获取请求消息头的相关方法

3.获取请求参数

4.通过 Request 对象传递数据

参考Servlet(3)中的HttpServletRequest 接口

out

javax.servlet.jsp.

JspWriter

用于在Web浏览器内输出信息

write(“”)、println("");

response

javax.servlet.HttpServletResponse

response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。

  1. 发送状态码相关的方法
  2. 发送响应消息头相关的方法

3.发送响应消息体相关的方法

参考Servlet(3)中的HttpServletResponse 接口

session

javax.servlet.http.

HttpSession

由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。

参考Servlet(4)中的HttpSession的常用方法

config

javax.servlet.ServletConfig

config 对象的主要作用是取得服务器的配置信息

参考Servlet(2)中的ServletConfig接口的常用方法

pageContext

javax.servlet.jsp.PageContext

pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。

getRequest()

getResponse()

getSession()

getOut()

getPage()

setAttribute(arg0, arg1, 范围)

getAttribute(arg0, 范围)

范围

PageContext.APPLICATION_SCOPE

PageContext.SESSION_SCOPE

PageContext.REQUEST_SCOPE

PageContext.PAGE_SCOPE

page

Java.lang.Object

page 对象代表JSP本身,只有在JSP页面内才是合法的.

 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。

参考Object类的方法

application

javax.servlet.ServletContext

application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。

参考Servlet(2)中的ServletContext接口的常用方法

exception

java.lang.Throwable

exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。

参考java.lang.Throwable/Exception类的常用方法

常用方法:

1.request   javax.servlet.HttpServletRequest  该对象代表了客户端的请求信息

                request.setCharacterEncoding("utf-8");

          request.getParameter("name");

          request.getRequestDispatcher("/my.html").forward(request,response)

2.response  javax.servlet.HttpServletResponse  response 代表的是对客户端的响应

      

response.setCharacterEncoding("utf-8");

               PrintWriter writer= response.getWriter();

            response.sendRedirect("test2.jsp");   

 

 

3.out     javax.servlet.jsp.JspWriter  用于在Web浏览器内输出信息

                out.write("<h1>"+name+"</h1>");

 

4.config   javax.servlet.ServletConfig   config 对象的主要作用是取得服务器的配置信息

                      config.getInitParameter("name");

                ServletContext context=config.getServletContext();

                String name=config.getServletName();

类似于ServletConfig接口使用

 

5.session  javax.servlet.http.HttpSession  由服务器自动创建的与用户请求相关的对象[会话对象]

                      session.setAttribute("name","zhangsan");

                Object object=session.getAttribute("name");

                session.removeAttribute("name");

                session.invalidate();   

6.exception  java.lang.Throwable  exception 对象的作用是显示异常信息

                 当前jsp页面是一个错误页面【page指令的isErrorPage="true"】

                 exception.printStackTrace();

7.page      Java.lang.Object   page 对象代表JSP本身,只有在JSP页面内才是合法的.

                参考Object类的方法

8.pageContext  javax.servlet.jsp.PageContext

                     取得任何范围的参数

                     PageContext.APPLICATION_SCOPE 整个应用程序

                     PageContext.SESSION_SCOPE  同一个会话范围

                     PageContext.REQUEST_SCOPE  用一个请求范围

                     PageContext.PAGE_SCOPE 当前页面范围

                     pageContext.setAttribute("name","zhangsan",PageContext.PAGE_SCOPE);

                      pageContext.getAttribute("name",PageContext.PAGE_SCOPE);

                     通过它可以获取 JSP页面的out、request、reponse、session、application 等对象

                      pageContext.getRequest();

                       pageContext.getResponse();

9.application  javax.servlet.ServletContext   

              application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的                 信息会在整个应用中都有效。

              ServletContext接口的常用方法

2.EL表达式

       格式:${表达式/变量/方法}

帮助我们去计算表达式的结果,并且直接将运算结果输出

注意

       1. 如果我们要在jsp页面中使用EL表达式语言,那么要在page指令中设置启用EL表达式【isELIgnored="false"】

       2. 通过EL表达式来访问变量中保存的数据,需要将这个变量保存到        request/session/application/pageContext对象中

 

      

调方法正确使用:

 

举个学生信息例子:

student.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>添加学生信息</title>

</head>

<body>

    <form action="student" method="post">

        学生编号:<input type="text" name="stuid"><br>

        学生姓名:<input type="text" name="stuname"><br>

        学生年龄:<input type="text" name="stuage"><br>

        学生地址:<input type="text" name="stuaddress"><br>

        <input type="submit" value="提交">

    </form>

</body>

</html>

StudentBean类

package com.weiwei.servlet;



public class StudentBean {

    private int stuid;

    private  String stuname;

    private  int stuage;

    private  String  stuaddress;



    public int getStuid() {

        return stuid;

    }



    public void setStuid(int stuid) {

        this.stuid = stuid;

    }



    public String getStuname() {

        return stuname;

    }



    public void setStuname(String stuname) {

        this.stuname = stuname;

    }



    public int getStuage() {

        return stuage;

    }



    public void setStuage(int stuage) {

        this.stuage = stuage;

    }



    public String getStuaddress() {

        return stuaddress;

    }



    public void setStuaddress(String stuaddress) {

        this.stuaddress = stuaddress;

    }

}

StudentServlet类

public class StudentServlet extends HttpServlet {

    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        doPost(req, resp);

    }



    @Override

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.setCharacterEncoding("utf-8");

        resp.setCharacterEncoding("utf-8");

        int stuid=Integer.parseInt(req.getParameter("stuid"));

        String stuname = req.getParameter("stuname");

        int stuage=Integer.parseInt(req.getParameter("stuage"));

        String stuaddress = req.getParameter("stuaddress");

        StudentBean studentBean = new StudentBean();

        studentBean.setStuid(stuid);

        studentBean.setStuname(stuname);

        studentBean.setStuage(stuage);

        studentBean.setStuaddress(stuaddress);

        //传参

        req.setAttribute("stuobj",studentBean);

        req.getRequestDispatcher("/test2.jsp").forward(req,resp);



    }

}

jsp页面

 

 

 

浏览器显示

 

 

3.JSTL—JSP标准标签库

core---核心标签库【经常使用】

       fmt---格式化标签库

       functions---函数标签库

       sql---sql标签库

       xml---xml的标签库

1.导入依赖包:jstl.jar  和 standard,jar

去maven中央仓库搜

2.在jsp页面中通过taglib指令导入jstl标签

       <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

              prefix---是为使用标签库中的标签时定义的前缀名称,通过前缀名称来判断使用的标签库;          prefix="c" 前缀名称就是c,c就是core标签库。

              prefix="xml" 前缀名称就是xml,xml的标签库。

 

3.1 <c:if>标签

格式:

<c:if test="判断表达式" >

主体内容

</c:if>

判断表达式的值,如果表达式的值为 true 则执行其主体内容。

 

3.2 <c:forEach>标签

遍历集合【它迭代一个集合中的对象】

items

要被循环的信息【集合/数组】

var

代表当前条目的变量名称

public class StudentServlet extends HttpServlet {

    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        doPost(req, resp);

    }



    @Override

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.setCharacterEncoding("utf-8");

        resp.setCharacterEncoding("utf-8");

        StudentBean  stu1=new StudentBean();

        stu1.setStuid(1001);

        stu1.setStuname("zhangsan");

        stu1.setStuaddress("西安");

        StudentBean  stu2=new StudentBean();

        stu2.setStuid(1002);

        stu2.setStuname("lisi");

        stu2.setStuaddress("北京");

        StudentBean  stu3=new StudentBean();

        stu3.setStuid(1003);

        stu3.setStuname("王五");

        stu3.setStuaddress("上海");

        List<StudentBean> stulist=new ArrayList<StudentBean>();

        stulist.add(stu1);

        stulist.add(stu2);

        stulist.add(stu3);

        req.setAttribute("mystulist", stulist);

        req.getRequestDispatcher("/test3.jsp").forward(req, resp);



    }

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

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>

<head>

    <title>Title</title>

</head>

<body>

<h1>通过JSTL标签+EL显示表格数据</h1>

<table>

    <c:forEach items="${mystulist}" var="stu">

        <tr>

            <td>${stu.stuid}</td>

            <td>${stu.stuname}</td>

            <td>${stu.stuaddress}</td>

        </tr>

    </c:forEach>

</table>



</body>

</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Java-请多指教

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

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

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

打赏作者

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

抵扣说明:

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

余额充值