开发jsp时将所有jsp放到WEB-INF文件夹下.在WEBROOT文件夹下只放一个当做入口的jsp文件.(入口jsp文件跳转功能由动作元素<jsp:forward file="/WEB-INF/xx.jsp"></jsp:forward>实现)这样可以防止别人直接从外界访问到jsp文件.
1.第二次访问jsp直接访问内存中的class文件.
2.如果jsp被修改了,再次访问就相当于是第一次访问.
3.在jsp中可以直接使用out对象,而无需先创建,因为out是jsp提供的九个内置对象之一.
4.在jsp中写java片段需要用<%%>包围起来.两个java片段中的变量是可以互相使用的,因为翻译成servlet文件后每个java语句片段都在同一个java文件里.
5.servlet很难对数据进行排版.jsp既可以用java代码提供动态数据又可以方便的对数据进行排版.
6.jsp的语法
①指令元素
一:page指令<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>里面还有其他属性.
page指令中的常见属性有language=""指定片段语言.import=""引包语句.session=""(值默认为true)如果值赋为false则不能使用session内置对象.errorPage=""当jsp页面出错时自动跳转到该错误页面.contentType=""和charset=""指定了网页以什么方式显示.pageEncoding=""制定了浏览器引擎以什么编码解析网页.
contentType只能指定网页显示方式.pageEncoding可以指定servlet引擎对jsp翻译的编码并且指定网页以什么方式显示.
二:<%@ include file="filename"%>用于引入一个jsp文件,servlet引擎在翻译时会把两个jsp翻译成一个servlet文件.被引入的jsp文件只需保留page指令即可<html><body>等均可以省略.如果文件不在相同文件夹则加入路径即可.第二种引入页面的方式<jsp:include page="jsp文件名"></jsp:include>该种方法叫动态引入两个jsp页面是分开编译的这种方式被引入的页面包含html标签也不会报错.与之相对应的静态引入会被编译为一个servlet文件,所以被引入的jsp文件包含html或者body等标签会报错.
三:taglib指令<mytag:xx属性 />(就是自定义标签).
②脚本元素
一:scriplet<%java代码%>
二:表达式<%=java表达式%><%=rs.getString(1)%>
如果将变量定义在<%%>之间则是局部变量.而定义在<%!%>相当于成员变量.
可以用<%!%>定义函数.不可以用<%%>定义函数,因为相当于嵌套定义了函数.
③动作元素
<jsp:forward page="url"></jsp:forward>相当于forward方法
④关于注释<!--注释内容-->该注释方式会在servlet中产生out.print用户访问的页面也有,只不过用户不可见.<%--注释内容-->该注释方式不会产生任何输出,是jsp专用注释方式,推荐使用这种注释方式.