JSP表达式
JSP表达式用来把Java数据直接插入到输出。其语法如下: <%= Java Expression %>
计算Java表达式得到的结果被转换成字符串,然后插入到页面。例如,下面的代码显示页面被请求的日期/时间:
time: <%= new java.util.Date() %>
为简化这些表达式,JSP预定义了一组可以直接使用的对象变量。后面我们将详细介绍这些隐含声明的对象,但对于JSP表达式来说,最重要的几个对象及其类型如下:
request:HttpServletRequest;
response:HttpServletResponse;
session:和request关联的HttpSession
out:PrintWriter用来把输出发送到客户端
JSP 中的注释
(1) HTML 注释:在标记符号“<!--”和“-->”之间加入注释内容
(2) JSP 注释:在标记符号“<%--”和“--%>”之间加入注释内容
内置对象
在JSP容器中生成的Servlet类的_jspService()方法中,定义了几个对象,在编写JSP页面时我们可以使用这些隐含对象。
PageContext pageContext = null; HttpSession session = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; JspWriter _jspx_out = null; PageContext _jspx_page_context = null;
注意:上面的代码没有exception内置对象,只有当页面的page指令的isErrorPage属性为true才会使用exception对象。
application对象
在JSP中设置属性和对应的值:
<html> <head> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <title>在此处插入标题</title> </head> <body> <% application.setAttribute("name", "zhangsan"); %> </body> </html>
在Servlet中利用ServletContext对象的getInitParameter()方法即可获取该属性值:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.print(this.getServletContext().getInitParameter("name")); }
out对象
out对象以字符流的形式输出数据,实际上是PrintWriter对象的带缓冲的版本,可以通过page指令的buffer属性来调整缓冲区的大小。
所有使用out的地方都可以使用输出表达式来代替,<%= ...%>表达式的实质就是out.write(...)。
session对象
session对象代表一次用户会话(从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开为止),session通常用于跟踪用户的会话信息,如判断用户是否登录系统或者跟踪用户购买商品信息等。
String getId(); //获取session的ID long getCreationTime();// 获取session的生成时间 void invalidate(); // 清空session内容
表单使用Post方式提交后接收到的乱码问题
A 接受参数时进行编码转换
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8")
B 在请求页面上开始处,执行请求的编码代码, request.setCharacterEncoding("UTF-8")
String str = request.getParameter("something")
C 为了避免每页都要写request.setCharacterEncoding("UTF-8")