jsp的访问过程:
客户--jsp--应用服务器编译--[数据库 -- 应用服务器
]--客户
jsp的编译过程
jsp-- java -- class再返回给客户端,如果jsp文件没有改变,则不再编译,编译好的class及java文件放在tomcat目录的work目录下
jsp指令
格式:<%@ 这里存放一个指令 %>
例:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
各语句说明:
language:为当前使用的语言,一般为JAVA
import:为当前页面引包,可以引入多个包,如
<%@ page language="java" import="java.util.*,java.text.*" pageEncoding="UTF-8"%>
pageEncoding:为传入到前端的编码格式
用contentType=”text/html;charset=UTF-8”这个也可以
可以通过设置来改变默认编码格式如图:
include静态包含某一个网页
taglib引入标签库
设置默认编码格式:
JSP中JAVA语句嵌入
jsp声明全局变量及方法(只有重新编译的时候会执行一次)
<%!
//判断是否是润年
public boolean isRun(int year){
return (year%4 == 0 && year%100 != 0) || (year % 400 == 0);
}
%>
java普通代码存放
(
每次请求都会执行一次
)
<%
//输出润年
out.println("<p>输出1980-2015间的润年</p>");
for(int i = 1980;i < 2015; i++){
if(isRun(i))
out.println(i);
}
//输出乘法表
out.println("<p>输出乘法表</p><br>");
for(int i = 1; i <= 9; i++){
for(int j = 1; j <= i; j++)
out.println(j + "*" + i + "=" + i * j );
out.println("<br>");
}
%>
jsp声明局部变量(
每次请求都会执行一次,局部里面不能定义方法,因为局部的代码都是统一编译到一个方法里面的)
<%
int num = 0;
out.println(++num);
%>
jsp使用表达式:
<%=表达式%>每次都会执行
<%="i为全局变量,初始为0,只要没有重新编译或服务器重新启动服务,i的值 都不会初始化,现在显示i++的值:" + i++ %>
jsp的注释
<%
/*
多行注释
*/
//单行注释
%>
这个注释在jsp编译成java文件的时候可以在java中看到,但客户端html中是看不到的。
<%-- 这是jsp注释,在编译的java文件中看不到,客户端也是看不到的。 --%>
<%-- 这是JSP注释 --%>
<!-- html注释,客户端的源码中是可以看得到的 -->
jsp的调试
在<%%>中设置断点
然后
启动服务的时候选DEBUG运行
以调试模式启动服务器后就可以
在访问jsp时进行调试了,后面和myeclipse是一样的。
访问服务器的小细节:
在访问时候WebRoot可以忽略,直接项目名和下面网页就可以了,如:
http://localhost:8080/First/访问主页,如果还有下一级文件夹则要写上目录名如:
http://localhost:8080/First/Test/MyJsp.jsp
WEB项目常见问题
404错误:找不到网页
500错误:服务器代码错误(异常、语法错误)