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

一文让你学会JSP

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

一文让你学会JSP

文章目录
    • 1、关于JSP
      • JSP简介
      • 原理:
    • 2、脚本和声明
      • 脚本
      • 声明和引用
    • 3、JSP三大指令
      • page指令
      • Taglib指令
      • include指令
    • 4、九大内置对象
      • out
      • request
    • 5、JSP动作元素
      • 第一类(JavaBean)
      • 第二类(基本元素)
      • 第三、四、五类

1、关于JSP JSP简介

JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。
JSP本质是是一种Java Servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。

原理:

当浏览器向服务器请求".jsp"文件时,服务器会去查找该文件是否存在,如果存在将这个jsp文件通过jsp引擎转换为".java"文件,并使用javac对该文件进行编译,生成".class"字节码文件,让该字节码文件对外提供服务。
我们可以找到这个".java"文件并打开,文件中的类继承了"org.apache.jasper.runtime.HttpJspbase"类,我们可以再Tomcat源码中寻找这个类,发现该类继承了HttpServlet,所以JSP本质上是一种Servlet。
".jsp"文件中的HTML页面的代码,底层是在service方法中使用Writer对象调用write方法写到页面上的。

2、脚本和声明 脚本

脚本声明用<%%>,以分号结尾

<%
out.print("这是脚本");
%>
声明和引用

声明用<%!%>,引用用<%=%>

<%!
    String name="张三";
int add(int a, int b){
    return a+b;
}
%>
<%="name"+name%>
<%="1+2"+add(1,2)%>

运行结果:

3、JSP三大指令
指令描述
page定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
include常用来嵌入页面
taglib引入标签库
page指令
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.HashMap" %>
keyvalue
contentType当前JSP页面的MIME类型和字符编码
languageJSP页面所用的脚本语言
import导入一些包
autoFlush控制out对象的缓存区。true:自动刷新
errorPage指定发生错误时跳转页面,配合isErrorPage="true/false"使用
isErrorPage当前页面是否是错误页面
  • 测试errorPage和errorPage

index.jsp有错误,设置发生错误时跳转到error.jsp页面(errorPage=“error.jsp”)

<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="error.jsp" %>
<%
double c=1/0;
%>


Hello World!

设置错误页面error.jsp(isErrorPage=“true”)

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


    Title


发生错误


配合error-page标签使用

keyvalue
error-page错误代码,不同的代码有不同的页面
location对应的地址

    404
    /error404.jsp
  

区别:
errorPage=“error.jsp”,页面内发生错误进行跳转
标签形式:全局发生错误时进行处理

Taglib指令

JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。
Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。

<%@ taglib uri="uri" prefix="prefixOfTag" %>


include指令

常用来将其他页面引入当前页面,只能将这个页面的全部引入,如:导航栏,页脚

  • 测试include指令

创建主页面index.jsp

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



<%@ include file="insert0.jsp"%>

在这里插入

创建被插入页面insert0.jsp

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


    Title


插入了

这是p标签


4、九大内置对象
  • out
  • request
out request

request对象在完成请求前一直有效

jsp—>jsp

  • 表单形式
  • url形式:以?隔开,以键值对的形式,多个参数用&

login.jsp

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


    Title


账号:

以url方式 xx

request.jsp

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


    Title


<%
    String acc = request.getParameter("acc");
    String pws = request.getParameter("pws");

    out.print("账号"+acc);
    out.print("
"); out.print("pws"+pws); %>

jsp—>java

login.jsp

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


    Title


账号:

Request.java

package com.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class Request extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String acc = req.getParameter("acc");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html");
        resp.getWriter().println("账号"+acc);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}

xml


    request
    com.servlet.Request
  
  
    request
    /request
  


运行结果:

5、JSP动作元素

语法:


第一类(JavaBean)
语法描述参数
jsp:useBean实例化对象id:实例化对象的名称 ,class:实例化的类,scope作用范围(request,application,page,session)
jsp:setProperty设置对象的属性name:实例化对象的名称,及实例化对象的id ,property:要实例化的属性名,value:属性的值
jsp:getProperty得到对象的属性name:实例化对象的名称,及实例化对象的id ,property:要实例化的属性名,会直接输出
jsp:include插入页面name:实例化对象的名称,及实例化对象的id ,property:要实例化的属性名,会直接输出

其他:

//跟表单关联
  

// 跟表单关联
 

//手工设置属性值
  

//跟request参数关联
 
  • 测试 jsp:useBean

创建需要实例化的类 User.java

package com.model;

public class User {
    private String name;
    private int age;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

JSP实例化:

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

    
    
    
    

相当于:

<%@ page import="com.model.User" %><%--
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
User user=new User();
user.setName("Tom");
user.setAge(16);
out.print(user.getName());
out.print(user.getAge());
%>
第二类(基本元素)
语法描述参数
jsp:include插入页面page:插入页面的地址
jsp:forward请求转发page:转发地址
jsp:param动作标记元素,必须和 jsp:forward,jsp:include,jsp:plugin一起使用,可以用来传递参数name:key,value:value


第三、四、五类
  • 第三类

jsp:root jsp:declaration jsp:scriptlet jsp:expression jsp:text jsp:output

  • 第四类

jsp:attribute jsp:body jsp:element

  • 第五类

jsp:invoke jsp:dobody

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

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

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