一、JSP的基本构成
1、指令标签(主要用于定义整个JSP页面的相关信息,不会产生任何内容输出到网页中)
<%@ 指令名称1 属性名称="属性值" ...%>,位于文件首位
(1)page指令
language属性:设置JSP页面使用的语言,目前只支持Java语言,默认值为Java
<%@ page language="java" %>
import属性:设置JSP导入的类包
pageEncoding属性:指定文件编码 <%@ page pageEncoding="UTF-8"%>
contentType属性: <%@ page contentType="text/html; charset=UTF-8"%>
(2)include指令(被包含文件的所有内容会被原样包含到JSP页面;被包含的文件有代码,不会被执行)
<%@include file="date.jsp"%> (不一定位于文件首位,可位于<body>标签中)
注意:被包含的JSP页面不要使用<html>和<body>标签,被包含进其他JSP页面会破坏页面格式;源文件与被包含的文件中变量与方法不能重名。
第一次出现如图所示问题,想起一个同学在jdk配置时出现中文,最后导致配置失败;于是我将原来project名字重命名为include,不是之前的“include指令”,再run,就运行成功了。所以,之后所有名称都尽量用英文,避免一些不必要的错误。
(3)taglib指令
2、HTML语句
3、注释
4、嵌入Java代码
5、JSP动作标签
二、嵌入Java代码 ( <% Java代码 %>)
如何记录生成某一成果耗时多少
<% long startTime =System.nanoTime(); //记录开始时间,单位纳秒
...
long time=System.nanoTime()-startTime;
out.println(time/1000); //输出用时多少毫秒
%>
毫秒
定义全局变量与全局方法
<%! long startTime =System.nanoTime();%>
<%! 方法%>
JSP表达式
<% java表达式 %> 最后结果是字符串类型
三、注释
html注释与jsp注释区别:
表达方式
html:<%-- 注释文本 -->
jsp:<%-- 注释文本 --%>
在浏览器中查看网页源码时是否能看到注释内容
html注释能看到注释信息;jsp注释看不到注释信息
四、request 对象
1、获取请求参数值
在一个请求中,通过"?"来传递参数,然后通过request对象的getParameter()方法获取参数的值,可获取文本元素、单选按钮、单选下拉列表框。
(1)先在web项目中建立idindex.jsp,其他部分不做更改,在<body></body>中加入即可
<body>
<a href="show.jsp?id=001">获取请求参数的值</a>
</body> 用超链接来请求show.jsp页面,并在请求后增加一个参数id
(2)新建show.jsp页面,其他不进行更改,仅在<body>中更改
<body>
id参数的值为:<%=request.getParameter("id") %><br>
name参数的值为:<%=request.getParameter("name") %>
</body>
不过要注意最后运行的时候在idindex.jsp页面运行,show.jsp运行出来id与name都会是null,没有传递参数。
运行show.jsp结果
运行idindex.jsp结果
2、获取Form表单的信息
使用getParameterValues()方法来获取复选框以及多选列表框被选定的内容,得到一个字符串数组,通过循环遍历这个数组来得到用户所选定的所有内容。
将书上的程序分别打入到formindex.jsp页面和formshow.jsp页面,果然出现了几下错误。
(1)<% %>中第二个百分号总是会显示如下提示:
但我的代码并没有问题,后面当我完全退出来eclipse,再重进它便又好了;并且虽有提示,但还是能顺利运行。
(2)
action后面的文件名一定要写对,否则会出现not available的错误。
(3)中文出现了乱码形式
按照老师提供的http://how2j.cn/k/servlet/servlet-gbk/554.html教程,在servlet进行解码和编码时,将new String(request.getParameter("name").getBytes("ISO8859_1"),"GBK" 中的GBK改成了UTF-8之后,再运行出来得到的结果便可以正确显示了。之所以这样行,是因为我的charset设置的是UTF-8,所以GBK就会显示不出;如果下面是GBK,那么将charset设置为GBK,也是同样可以显示出来。
五、response对象---重定向网页
response.sendRedirect(""); 可以将响应发送到另一个指定的位置进行处理。
六、session对象
创建session信息:session.setAttribute(关键词,对象);
获取session信息:session.getAttribute(关键词);
从会话中移除指定的绑定对象:session.removeAttribute(关键词);
销毁session:session.invalidate();
练习书上的练习题得出来的又出现了中文乱码:
解决方案:按照老师给的网站乱码解决方案,在request.getParameter()之前放上request.setCharacterEncoding("UTF-8"); 乱码问题便得以解决。