404:资源找不到异常
500:服务器异常
声明<%!
声明变量 函数等...
%>
表达式<%=表达式 %>
脚本<%
//java代码
%>
page中的常用元素
contentType //元素格式和页面编码
errorPage 当前页面出错时要跳转的页面
isErrorPage 设置当前页面是否处理错误的页面(该页面可以使用JSP内置对象exception)
language=”java” 设置页面支持的脚本语言
import导入相关的class文件(唯一一个出现多次的属性)
pageEncoding 设置当前页面编码,如果存在charset,以此为准
session 当前页面 true,可以使用session对象,false,不可使用
<@ page language="java" contentType = "text/html;charset=UTF-8
errorPage="500.jsp"
">
<@ page import="java.util.*,java.net.*",
import="java.sql.*">
<%
int i = 2/0;
%>
-----------------------------
<@ page language="java" contentType = "text/html;charset=UTF-8"
isErrorPage = "true"
>
<body>
页面错误<%=exception.getMessage()%>
</body>
include指令:编译一个文件.静态引入,将目标页面html原样不动拷贝到该页面中.
将被包含的页面后缀修改为.jspf片段页面,不会被转换编译.
<%@ include file="文件地址"%>
jsp:include 动态引入,不能引入.jspf片段页面,只能引入完整的jsp页面,引入的页面都被编译.也就是说引入几个片段,生成几个class文件.
如果一个子夜面发生改变,其它子页面不会受到影响.
主页面index.jsp
<jsp:include page="header.jsp">
<jsp:param name = "user" value = "admin" />
</jsp:include>
子页面header.jsp
用户名:<%=request.getParameter("user")%>
jsp:param和include动作元素配合使用.
jsp:useBean id=”标识符myUser” class=”java类名,注意导包” scope=”作用范围”
scope四个作用域范围
1.page:当前页面有效pageContext.getAttribute(“实例名”)
2.request:可以通request.getAttribute()方法获得JavaBean对象
3.session:可以通过HttpSession.getAttribute()方法获得JavaBean对象
4.application:可以通过application.getAttribute()方法获得JavaBean对象.
原页面
<jsp:useBean id="user" class="com.po.User" scope="p.r.s.a">
跳转的页面(application)
用户名:<%=((User)application.getAttribure("myUsers")).getUsername()%><br>
跳转的页面(session)
用户名:<%=((User)session.getAttribure("myUsers")).getUsername()%><br>
跳转的页面(request)(服务器转发)
用户名:<%=((User)request.getAttribure("myUsers")).getUsername()%><br>
跳转的页面(Page)只在当前页面有效
用户名:<%=((User)application.getAttribure("myUsers")).getUsername()%><br>
<%
String username="";
String password = "";
if(pageContext.getAttribute("myUser") != null )
{
username = ((User)pageContext.getAttribute("myUser")).getUsername();
password = ((User)pageContext.getAttribute("myUser")).getPassword();
}
%>
用户名:<%=username%>
密码:<%=password%>
--------------
jsp:setProperty
jsp:getProperty
<%@ page import="com.csdn.model.User"%>
<!-相当于:User myUser = new User();->
<jsp:useBean id="myUser" class="User">
<jsp:setProperty name="myUser" property="*" />
<jsp:getProperty name="JavaBean实例名" property="属性值"/>
setProperty 四种赋值形式
1. <jsp:setProperty name = "JavaBean实例名" property="*"/>(跟表单关联):也就是说,根据表单所传过来的参数的名字自动跟JavaBean中的属性Field关联匹配.(全部匹配的属性都有值)
2. <jsp:setProperty name = "JavaBean实例名" property="JavaBean属性名"/>(跟表单关联)类似上一个,但是单个匹配,只匹配你填写的 property 这个属性.
3. <jsp:setProperty name = "JavaBean实例名" property="JavaBean属性名" value = "BeanValue"/>(手工设置)跟表单无关,给property这个属性,填写value这个值.
4. <jsp:setProperty name = "JavaBean实例名" property="propertyName" param="request对象中的参数名或者url中的参数,get提交方式中的参数"/>
如:www.sss.com/xxx?user=admin&pass=123;
<jsp:setProperty name="myUser" property="username" param="user"/>(这是给myUser的username这个属性赋值)
<jsp:setProperty name="myUser" property="username" param="pass"/>(这是给myUser的password这个属性赋值.)
第四中方式主要为了处理,表单参数和JavaBean的属性名不一致的情况.
Forward动作
<jsp:forward page="user.jsp"/>
//等同于
request.getRequstDispatcher("").forward(request,response);
param动作
<jsp:forward page="user.jsp">
<jsp:param name="email" value="abcd@163.com"/>
</forward>
接收方法和表单参数一样,通过
String email = request.getParameter("email");