JSP简单学习

jsp是在html中嵌入java代码

jsp也是在j2ee服务端中的java组件

第一次运行

在第一次运行jsp代码时会经历以下步骤,将jsp转为java代码,将java代码转为class文件。

所以通常会比较慢,编译后就好多了。

四大作用域

  • request
  • session
  • page
  • application

部署jsp

xml 复制代码
<servlet>
    <servlet-name>a<servlet-name/>
    <jsp-file>/a.jsp<jsp-file/>
    <servlet-mappiing>
        <servlet-name><servlet-name/>
        <url-pattern><url-pattern/>
    <servlet-mappiing/>
<servlet/>

jsp作为servlet的继承者,自然是可以部署的,但是一般不会这么做。

内嵌java语法

  • <%@ %>jsp指令的语法
  • <%= %>jsp表达式的语法
  • <%! %>jsp声明的语法
  • <%-- --%>jsp注释的语法
  • <% %>jsp中可以放置任何合法的java代码,其最终会被转换到service代码内。

jsp指令

  • <%@ page 属性列表%> 定义页面的依赖属性,如脚本语言,error页面,缓存需求等
  • <%@ include file="afile" %> 包含其它文件
  • <%@ taglib uri="" prefix="a" %> 标签库的定义

例子

复制代码
<%@ page import="java.util.*,java.net.*,java.io.*" session="true" isErrorPage="false" errorPage="/error.jsp"%>
<%@ include file="copyright.html" %>

Jsp声明

声明函数或变量,供后续使用。

复制代码
<%! int i = 0;%>
<%! Circle a = new Circle(2.0);%>

或者

复制代码
<jsp:declaration>
    int i = 0;
<jsp:declaration/>

Jsp的action行为标签


9个隐式变量(内置变量)

java 复制代码
HttpServletRequest request
HttpServletEesponse response
ServletContext application
PageContext pagecontext
ServletConfig config
HttpSession session
JspWriter out
Exception exception
page,等价于this

考试重点JspWriter,PageContext

java 复制代码
package javax.servlet.jsp

public abstract class JspWriter extends Writer {
    public static final int NO_BUFFER = 0;
    public static final int DEFAULT_BUFFER = -1;指示 Writer 已缓冲并使用实现默认缓冲区大小的常量。
    public static final int UNBOUNDED_BUFFER = -2;常量表示 Writer 是缓冲的并且是无界的;这在 BodyContent 中使用。
    protected int bufferSize;
    protected boolean autoFlush;

    protected JspWriter(int bufferSize, boolean autoFlush) {
        this.bufferSize = bufferSize;
        this.autoFlush = autoFlush;
    }

    public abstract void newLine() throws IOException;

    public abstract void print(boolean var1) throws IOException;

    public abstract void print(char var1) throws IOException;

    public abstract void print(int var1) throws IOException;

    public abstract void print(long var1) throws IOException;

    public abstract void print(float var1) throws IOException;

    public abstract void print(double var1) throws IOException;

    public abstract void print(char[] var1) throws IOException;

    public abstract void print(String var1) throws IOException;

    public abstract void print(Object var1) throws IOException;

    public abstract void println() throws IOException;

    public abstract void println(boolean var1) throws IOException;

    public abstract void println(char var1) throws IOException;

    public abstract void println(int var1) throws IOException;

    public abstract void println(long var1) throws IOException;

    public abstract void println(float var1) throws IOException;

    public abstract void println(double var1) throws IOException;

    public abstract void println(char[] var1) throws IOException;

    public abstract void println(String var1) throws IOException;

    public abstract void println(Object var1) throws IOException;

    public abstract void clear() throws IOException;

    public abstract void clearBuffer() throws IOException;

    public abstract void flush() throws IOException;

    public abstract void close() throws IOException;

    public int getBufferSize() {
        return this.bufferSize;
    }

    public abstract int getRemaining();此方法返回缓冲区中未使用的字节数。

    public boolean isAutoFlush() {
        return this.autoFlush;
    }
}
java 复制代码
package javax.servlet.jsp

public abstract class PageContext extends JspContext {
    public static final int PAGE_SCOPE = 1;
    public static final int REQUEST_SCOPE = 2;
    public static final int SESSION_SCOPE = 3;
    public static final int APPLICATION_SCOPE = 4;
    public static final String PAGE = "javax.servlet.jsp.jspPage";
    public static final String PAGECONTEXT = "javax.servlet.jsp.jspPageContext";
    public static final String REQUEST = "javax.servlet.jsp.jspRequest";
    public static final String RESPONSE = "javax.servlet.jsp.jspResponse";
    public static final String CONFIG = "javax.servlet.jsp.jspConfig";
    public static final String SESSION = "javax.servlet.jsp.jspSession";
    public static final String OUT = "javax.servlet.jsp.jspOut";
    public static final String APPLICATION = "javax.servlet.jsp.jspApplication";
    public static final String EXCEPTION = "javax.servlet.jsp.jspException";

    public PageContext() {
    }

    public abstract void initialize(Servlet var1, ServletRequest var2, ServletResponse var3, String var4, boolean var5, int var6, boolean var7) throws IOException, IllegalStateException, IllegalArgumentException;

    public abstract void release();

    public abstract HttpSession getSession();

    public abstract Object getPage();页面对象的当前值(在 Servlet 环境中,这是 javax.servlet.Servlet 的实例)。

    public abstract ServletRequest getRequest();请求对象 (ServletRequest) 的当前值。

    public abstract ServletResponse getResponse();响应对象 (ServletResponse) 的当前值。

    public abstract Exception getException();

    public abstract ServletConfig getServletConfig();

    public abstract ServletContext getServletContext();

    public abstract void forward(String var1) throws ServletException, IOException;

    public abstract void include(String var1) throws ServletException, IOException;

    public abstract void include(String var1, boolean var2) throws ServletException, IOException;

    public abstract void handlePageException(Exception var1) throws ServletException, IOException;

    public abstract void handlePageException(Throwable var1) throws ServletException, IOException;

    public BodyContent pushBody() {
        return null;
    }

    public ErrorData getErrorData() {
        return new ErrorData((Throwable)this.getRequest().getAttribute("javax.servlet.error.exception"), (Integer)this.getRequest().getAttribute("javax.servlet.error.status_code"), (String)this.getRequest().getAttribute("javax.servlet.error.request_uri"), (String)this.getRequest().getAttribute("javax.servlet.error.servlet_name"));
    }
}

JSP EL表达式

复制代码
<%
    request.setAttribute("a","hello")
%>
${a}

会在四大作用域中依次搜索a这个键名。

显示hello

变量定义使用setAttribute()方法进行设置,可以设置在四大作用域中的任意一个域中。

预定义11个对象

为了方便使用,定义了可以直接供我们使用的11个对象。

大多是都是用Map存储,采用键值对的形式。

  • pageContext
  • param
  • paramValues
  • header
  • headerValues
  • cookie
  • initParam
  • pageScope
  • requestScope
  • sessionScope
  • applicationScope

只有pageContext是PageContext类型。

相关推荐
萌新小码农‍6 小时前
Java分页 Element—UI
java·开发语言·ui
鼠鼠我捏,要死了捏6 小时前
深入实践G1垃圾收集器调优:Java应用性能优化实战指南
java·g1·gc调优
书院门前细致的苹果6 小时前
ArrayList、LinkedList、Vector 的区别与底层实现
java
再睡亿分钟!6 小时前
Spring MVC 的常用注解
java·开发语言·spring boot·spring
武文斌776 小时前
arm启动代码总结
arm开发·嵌入式硬件·学习
qq_195551697 小时前
代码随想录70期day7
java·开发语言
我怕是好7 小时前
学习stm32 蓝牙
stm32·嵌入式硬件·学习
索迪迈科技7 小时前
STM32F103C8T6开发板入门学习——点亮LED灯2
stm32·嵌入式硬件·学习
Sam-August7 小时前
【分布式架构实战】Spring Cloud 与 Dubbo 深度对比:从架构到实战,谁才是微服务的王者?
java·spring cloud·dubbo
麦兜*7 小时前
MongoDB 常见错误解决方案:从连接失败到主从同步问题
java·数据库·spring boot·redis·mongodb·容器