JSP基本使用

<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*,java.lang.*" pageEncoding="utf-8" %>
<%@ page session="true" %>
<%@ page errorPage="error.jsp" isErrorPage="true" %>
<%
String path = request.getContextPath();
    System.out.println(path);
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    System.out.println(basePath);

%>
<html>
<head>
    <base href="<%=basePath%>">
    <title>Title</title>
</head>
<body>
<%!
String str="jsp简单";
public void  test(){
    System.out.println("我是全局代码块");
}

public String hehe(){
    return "hehe";
}
%>
<%
//int i = 5/0;
%>
<!--我是html注释-->
page jsp
<%
 int i = new Random().nextInt(10);
 int a = 100;
 if(i>5){
%>
<b>今天天气很好</b>
<%=str%>
<%}else{
%>
<b>今天天气不好</b>
<%=hehe()%>
<%}%>

<%@ include file="staticImport.jsp"%>
<jsp:include page="dynamicImport.jsp"></jsp:include>

<%--
<jsp:forward page="forward.jsp">
--%>
<%--
<jsp:param name="china" value="beijing"></jsp:param>
--%>
<%--
<jsp:param name="hebei" value="shijiazhaung"></jsp:param>
--%>
<%--</jsp:forward>--%>

<%--
<%--%>
<%--response.sendRedirect("forward.jsp");--%>
<%--%>
--%>

<a href="a/a.jsp">aaa</a>
<a href="b/b.jsp">bbb</a>
</body>
</html>
  1. page:用来设置转译成servlet文件时的参数
  1. contentType:表示浏览器解析响应信息的时候使用的编码和解析格式
  1. language:表示jsp要转译成的文件类型
  1. import:导入需要的jar包,多个包使用逗号分隔
  1. pageEncoding:设置页面的编码格式
  1. session:用来控制sevlet中是否有session对象
  1. errorPage:当页面发生逻辑错误的时候,跳转的页面
  1. extends:需要要转译的servlet类要继承的父类(包名+类名)
  1. 局部代码块: 可以将java代码跟页面展示的标签写到一个jsp页面中,java代码转译成的servlet文件中,java代码跟输出是保存在service方法中的
    缺点: 代码可读性比较差,开发比较麻烦,一般不使用
  1. 全局代码块:
  • 定义公共的方法的时候需要使用全局代码块使用<%!%>、,生成的代码在servlet类中
  • 调用的时候需要使用局部代码块
  1. 脚本调用方式
    使用<%=直接调用变量和方法(必须有返回值)%>
    注意:不能再变量或方法的后面添加;
  1. 页面导入的方式

静态导入: <%@ include file="staticImport.jsp"%> file中填写的是jsp文件的相对路径,不会将静态导入的页面生成一个新的servlet文件,而是将两个文件合并,
优点: 运行效率高
缺点: 两个页面会耦合到一起,不利于维护,两个页面中不能存在相同名称的变量名

动态导入: <jsp:include page="dynamicImport.jsp"></jsp:include> 两个页面不会进行合并,分别生成自己的servlet文件,但是页面在最终展示的时候是合并到一起的
优点: 没有耦合,可以存在同名的变量

  1. 请求转发:

在jsp中也可以实现servlet的请求转发功能
<jsp:forward page="forward.jsp"></jsp:forward>
page填写的是jsp页面的相对路径
注意: 在标签中间不可以添加任何字符. 除了<jsp:param name="" value="">,
在转发的页面中想要获取到属性值通过request.getParameter(String key)

  1. jsp九大内置对象:

jsp页面在转移成其对应的servlet文件的时候,会自动声明一些对象,在jsp页面中可以直接使用
注意: 内置对象是在jsp页面中使用的,可以在局部代码块中使用,也可以在脚本段语句中使用,但是不能再全局代码块中使用

九大对象:

  1. pageContext: 表示页面的上下文的对象封存了其他的内置对象,封存了当前页面的运行信息 注意:每一个页面都有一个对应的pagecontext对象,伴随着当前页面的结束而结束
  2. request: 封装当前请求的数据,由tomcat创建,一次请求对应一个request对象
  3. session: 用来封装同一个用户的不同请求的共享数据,一次会话对应一个session对象
  4. application: 相当于ServletContext对象,一个web项目只有一个对象,存储着所有用户的共享数据,从服务器启动到服务器结束
  5. response: 响应对象,用来响应请求数据,将处理结果返回给浏览器,可以进行重定向
  6. page: 代表当前jsp对象,跟java中的this指针类似
  7. exception: 异常对象,存储当前运行的异常信息,必须在page指令=中添加属性isErrorPage=true
  8. config: 相当于Serlverconfig对象,用来获取web.xml中配置的数据,完成servlet的初始化操作
  9. out: 响应对象,jsp内部使用,带有缓存区的响应对象,效率要高于repsonse

四大作用域:
pageContext: 表示当前页面,解决当前页面内的数据共享问题,获取其他内置对象
request: 一次请求,一次请求的servlet的数据共享,通过请求转发的方式,将数据流转到下一个servlet
session: 一次会话,一个用户发送的不同请求之间的数据共享,可以将数据从一个请求流转到其他请求
application: 项目内,不同用的数据共享问题,将数据从一个用户流转到其他用户

  1. 路径问题:

想要获取项目中的资源,可以使用相对路径,也可以使用绝对路径

  1. 相对路径:相对于当前页面的路径
    问题: 1. 资源的位置不可以随便更改. 2. 需要使用…/的方式进行文件夹的跳出,如果目录结果比较深,可以操作起来比较麻烦
  2. 绝对路径:在请求路径的前面加/,表示当前服务器的根路径,使用的时候要添加/虚拟项目名称/资源目录
  3. 使用jsp中自带的全局路径声明:
System.out.println(path); String basePath
=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";System.out.println(basePath);
%>  <base href="<%=basePath%>"> //添加资源路径的时候,从当前项目的web目录下添加即可 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值