目录
JSP脚本简介
JSP脚本用于在JSP页面内定义Java代码
JSP脚本分类
1.<%...%>∶内容会直接放到_jspService()方法之中
2.<%=..%>∶内容会放到out.print()中,作为out.print()的参数
3.<%!...%>:内容会放到_jspService()方法之外,被类直接包含效果展示:
控制台:
代码:
<%@page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title> title </title> </head> <body> <h1>hello</h1> <%-- 下面内容会直接放到生成的java文件的_jspService()方法之中 --%> <% System.out.println("hello"); int x=1; test(); %> <%-- 内容会放到生成的java文件的out.print()中,作为out.print()的参数 --%> <%= "hello" %> <%=x%> <%-- 内容会放到生成的java文件的_jspService()方法之外,被类直接包含 --%> <%! void test(){ System.out.println("test"); } %> </body> </html>
JSP脚本截断实现java代码和html嵌套
代码示例:
<% for(int i = 0;i < users.size();i++){ User user = users.get(i); %> <tr> <td><%user.getId()%></td> <td><%user.getName()%></td> <td><%user.getAge()%></td> </tr> <% } %>
JSP缺点
由于JSP页面内,既可以定义HTML标签,又可以定义Java代码,造成了以下问题:
1.书写麻烦:特别是复杂的页面
2.阅读麻烦
3.复杂度高:运行需要依赖于各种环境,JRE,JSP容器,JavaEE...
4.占内存和磁盘:JSP会自动生成.java和.class文件占磁盘,运行的是.class文件占内存
5.调试困难:出错后,需要找到自动生成的.java文件进行调试
6.不利于团队协作:前端人员不会Java,后端人员不精HTML...
现在都用HTML+AJAX来替代JSP。
你问我为什么要学????了解一下增加一下知识面!!!万一有用呢?
EL表达式
Expression Language表达式语言,用于简化JSP页面内的Java代码
主要功能:获取数据
语法:${expression}
例:${users}获取域中存储的key为users的数据示例:
ELServlet.java
import LoginAndRegister.test.User; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException; import java.util.ArrayList; import java.util.List; @WebServlet("/ELServlet") public class ELServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.准备数据 List<User> users = new ArrayList<User>(); users.add(new User(1,"ylm","123")); //2.存储到request域中 request.setAttribute("users",users); //3.转发到ELdemo1.jsp request.getRequestDispatcher("ELdemo1.jsp").forward(request,response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
ELdemo1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> ${users} </body> </html>
运行效果:
JavaWeb中的四大域对象
1. page:当前页面有效
2. request:当前请求有效
3. session:当前会话有效
4. application:当前应用有效
EL表达式获取数据,会依次从这4个域中寻找,直到找到为止