jsp

文章目录

    • 介绍
    • jsp嵌入java方式
    • jsp内置对象
      • 9个内置对象
      • 内置对象的作用域

介绍

jsp本质是servlet,jsp主要负责和用户交互,将最终的界面呈现给用户。相当于 html+css+js+java混合文件。
当客户端请求jsp页面的时候,服务器的jsp引擎将jsp页面翻译成servlet,再由web容器调用servlet。


jsp嵌入java方式

直观感受jsp其实就是html中嵌入java代码,具体嵌入方式有3种:

  1. jsp声明:定义java方法,不能写逻辑代码
<%!
public String test()
{
     
	return "Hello World";
}
%>
  1. jsp脚本:执行具体java逻辑代码,不能定义方法
<%
String str = test();
%>
  1. jsp表达式:把java对象直接输出到html页面中
<%= str %>

例子:

<%@ page import="com.julian.utility.User"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
  List<User> user = new ArrayList<>();
  user.add(new User("张三",21));
  user.add(new User("李四",22));
  user.add(new User("王五",23));
 %>

  <table>
    <tr>
      <th>姓名</th>
      <th>年龄</th>
    </tr>
    <%
      for(int i=0; i<user.size(); i++)
      {
     
    %>
      <tr>
        <td><%=user.get(i).getName()%></td>
        <td><%=user.get(i).getAge()%></td>
      </tr>
    <%
      }
    %>

  </table>

  </body>
</html>

jsp内置对象

9个内置对象

  1. request:表示一次请求,来自HttpServletRequest类
  2. response:表示一次响应,来自HttpServletResponse类
  3. pageContext:页面上下文,来自PageContext类
  4. session:表示一次会话,用来保存用户信息,来自于HttpSession类
  5. application:表示当前web应用,全局对象,来自ServletContext类
  6. config:表示当前jsp对应Servlet的servletConfig对象,获取当前servlet信息
  7. out:向浏览器输出数据,来自JspWriter类
  8. page:当前jsp对象的Servlet对象,来自Servlet类
  9. exception:表示jsp页面发生的异常,来自Exception类

标粗的为常用内置对象

  • request对象的常用方法
String request.getParameter(String key); // 获取请求中的参数
void setAttribute(String key, Object value) //通过键值对的形式存值
Object getAttribute(String key); //通过key值取出value
request.getRequestDispatcher("test2.jsp").forward(request,response);// 请求转发到test2.jsp,带上request和response对象
String[] getParamterValues(String key) //得到客户端传来的同名参数,返回数组
void setCharacterEnoding(String charset)//指定每个请求的编码
  • response对象的常用方法
response.sendRedirect("test2.jsp"); //请求重定向,完成页面跳转和request.getRequestDispatcher不同的是,这里是重新由客户端发起的另一个请求,
  • session
session.getId() //获取当前会话id
session.setMaxInactiveInterval(int interval) //设置session最大失效时间,单位 s
session.getMaxInactiveInterval()//获取session最大失效时间,单位 s
session.invalidate() //设置session立即失效
session.setAttribute(String key, Object value) //  通过键值对来存储数据,可覆盖
session.getAttribute(String key) // 通过key值获取数据
session.removeAttribute(String key) // 通过key值移除数据


拓展:转发和重定向的区别:

  1. request.getRequestDispatcher(“test2.jsp”).forward(request,response); // 转发
  2. response.sendRedirect(“test2.jsp”); //重定向

转发:转发给其他页面的是同一个请求,同一个请求在服务器之间传递,地址栏不变,也较服务器跳转;
重定向:是由客户端重新开启一个新的请求,之前的请求结束生命周期,地址栏改变,也较客户端跳转。
如果两个页面通过request传值,只能用转发,不能用重定向。


内置对象的作用域

  • pageContext: 作用域为同一page,当前页面有效
  • request: 作用域为同一次request,当前请求中有效
  • session:作用域为同一次session,关闭浏览器或者服务器关闭则失效
  • application:作用域为整个application,存在服务器内存中,Tomcat应用停掉则失效

作用域大小为 page < request < session < application;
都可以用setAttribute() 和 getAttribute() 通过key-value的形式存储数据和读取数据。

你可能感兴趣的:(JAVA,web)