JSP规范

JSP规范介绍

1、来自于JAVAEE规范中一种

2、JSP规范制定了如何开发JSP文件代替响应对象将处理结果写入到响应体的开发流程

3、JSP规范制定了Http服务器应该如何调用管理JSP文件

响应对象存在的弊端

1、适合将数据量较少的处理结果写入到响应体

2、如果处理结果数量过多,使用响应对象增加开发难度

JSP文件的优势

1、JSP文件在互联网通信过程,是响应对象替代品.

2、降低将处理结果写入到响应体的开发工作量降低处理结果维护难度

3、在JSP文件开发时,可以直接将处理结果写入到JSP文件不需要手写out.print命令,在

4、Http服务器调用JSP文件时,根据JSP规范要求自动的将JSP文件书写的所有内容通过输出流写入到响应体

HTML文件和JSP文件的区别

1、作为资源文件类型不同

HTML文件属于静态资源文件其相关命令需要在浏览器编译并执行的.

JSP文件属于动态资源文件其相关命令需要在服务端编译并执行的

2、调用形式不同

 如果浏览器访问HTML文件,此时Http服务器直接通过一个输出流

 将HTML文件中所有的内容写入到响应体

 如果浏览器访问JSP文件。此时Http服务器根据JSP规范来操作JSP文件编辑---->编译----->调用

JSP文件运行原理图

 

1、Tomcat根据JSP规范,将被访问的JSP文件[编辑]为一个java文件。这个Java文件是Servlet接口实现类

2、Tomcat根据JSP规范,调用JVM(javac one_jsp.java)将这个java文件[编译]为class类型

3、Tomcat根据JSP规范负责生成这个class文件的实例对象。这个实例对象是一个Servelt接口实例对象

4、Tomcat根据JSP规范通过实例对象调用class文件中_jspService方法,_jspService方法在运行时负责将JSP文件中书写内容写入到响应体中

Http服务器【编辑】与【编译】JSP文件位置:

  标准答案:我在【work】下看到这个证据

 C:\Users\[登录windows系统用户角色名]\.IntelliJIdea2018.3\system\tomcat\[网站工作空间]\work\Catalina\localhost\【网站名】\org\apache\jsp

执行标记

命令格式:

 <% int a  =10;  %> 声明局部变量

<% boolean flag = 30 >= 40; %>  Java中表达式(数学表达式,关系表达式,逻辑表达式)

<%

if(判断条件){  

  }else{   

  }

  while(){   

    }

%>  书写控制语句

命令作用:通知Http服务器将JSP文件中Java命令与其他普通执行结果进行区分

输出标记

命令格式:

<%=java的变量名%>

<%=java的表达式%>

命令作用:通知Tomcat将输出标记中【变量的值】或则输出标记中【表达式运算结果】写入到响应体

JSP内置对象

JSP文件的内置对象:request

    类型:HTTPServletRequest

    作用:

        在JSP文件运行时读取请求包中的相关信息

        与Servlet在请求转发过程中实现数据共享

JSP文件内置对象:session

    类型:HttpSession

    作用:JSP文件在运行时,可以通过session指向当前用户的会话作用域对象,来添加共享数据,或者读取共享数据

ServletContext application 全局作用域对象

同一个网站中Servlet与JSP都可以通过当前网站的全局作用域对象来实现数据享

JSP文件中的内置对象:application

下面来举一个Servlet和JSP联合调用的案例

1、首先创建一个学生对象的实体类

public class Student {
    private Integer sId;
    private String sname;

    public Student() {
    }

    public Student(Integer sId, String sname) {
        this.sId = sId;
        this.sname = sname;
    }

    public Integer getsId() {
        return sId;
    }

    public void setsId(Integer sId) {
        this.sId = sId;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }
}

2、创建Servlet接口实现类,通过请求作用域对象共享数据到JSP问文件,并输出

public class OneServlet extends HttpServlet {
    //业务处理,得到处理结果---查询学员信息
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Student s1=new Student(100,"zhangsan");
        Student s2=new Student(100,"zhangsan");
        Student s3=new Student(100,"zhangsan");
        List<Student> studentList=new ArrayList();
        studentList.add(s1);
        studentList.add(s2);
        studentList.add(s3);

        //将共享数据添加到请求作用域对象中
        request.setAttribute("key",studentList);
        //通过请求转发的方式调用stu_show.jsp
        //并将资源报告的请求对象和响应对象通过Tomcat交给stu_show.jsp使用
        request.getRequestDispatcher("/stu_show.jsp").forward(request,response);
    }
}

3、从请求作用对象中获取共享数据循环遍历

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    //从请求作用域对象中获取共享数据
    List<Student> studentList=(List)request.getAttribute("key");
    //循环遍历
%>
<table border="2px" align="center">
    <tr>
        <td>学生编号</td>
        <td>学生姓名</td>
    </tr>
    <%
        for(Student student:studentList){
    %>
    <tr>
        <td><%=student.getsId()%></td>
        <td><%=student.getSname()%></td>
    </tr>
    <%
        }
    %>
</table>

执行结果

猜你喜欢

转载自blog.csdn.net/qq_45796208/article/details/108824163
jsp