引言
有关JSP的相关知识点的介绍。
I.在myeclipse环境中集成tomcat步骤
1.
2.
3.
4.
5.创建一个web项目:
File–>new –>web project
6.打开index.jsp进行编辑
7.部署web应用:
点击了add按钮之后,会弹出以下界面:
选择tomcat6.0之后,finish完成
8. 启动tomcat服务器
9. 可以在浏览器中访问该web应用了。
始终记住,jsp文件仅仅是一个草稿文件,jsp中为我们提供的那些api也都是草稿api,最终jsp中的语法会变成之前我们学习过得java语法。
II.JSP中的各种元素:脚本元素、指令元素、动作元素。
(一) 脚本元素:
1) <% %>在该脚本段中的所有内容,最终会出现在一个Java方法中。
所以,在Java方法中可以写什么内容,在该脚本段中也可以写什么内容,在Java方法中不能写什么内容,在该脚本段中也就不能写什么内容。
2)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<h2>index.jsp</h2>
<%!
int count = 0;
%>
hahaha
<br />
你是第<%=++count %>个访客
(二) 指令元素
所有的指令元素,都是<%@ %>
page,学习page指令元素,就是学习page指令元素的属性.
import 用于引入外包的class
Buffer 用于控制当前jsp页面的缓冲区大小,默认值为8kb
contentType 用于告诉浏览器,服务器给你发送的是什么格式的数据。
errorPage 当当前jsp页面中抛出异常的时候,指定的跳转页面
isThreadSafe 控制web服务器是否对该jsp页面支持并发,取值为true就表示支持并发
pageEncoding 1 .Jsp–>java过程中,就是使用该属性指定的码表来生成java源文件的。2.告诉浏览器使用什么码表。
Include:静态包含
静态包含,就是把目标页面包含到<%@ include file=””%>代码处。
taglib(暂留)
(三) 动作元素
a) JavaBean的规范:
1. 所有属性必须私有化。
2. 必须为私有属性提供公共的getter(获取器)和setter(设置器)
3. 必须提供一个公共的无参的构造器。
4. 必须实现序列化接口: java.io.Serializable
通过简单的代码体会三个动作元素。
一个student的JavaBean
package com.westos.stu;
import java.io.Serializable;
public class StudentBean implements Serializable{
private String name;
private int age;
public StudentBean() {
super();
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<jsp:useBean id="n1" class="com.westos.stu.StudentBean"></jsp:useBean>
<jsp:setProperty property="name" name="n1" value="薛之谦" />
<jsp:setProperty property="age" name="n1" value="34" />
姓名:<jsp:getProperty property="name" name="n1"/><br />
年龄:<jsp:getProperty property="age" name="n1"/><br />
<jsp:useBean id="n2" class="com.westos.stu.StudentBean"></jsp:useBean>
<jsp:setProperty property="name" name="n2" value="高磊鑫" />
<jsp:setProperty property="age" name="n2" value="34" />
姓名:<jsp:getProperty property="name" name="n2"/><br />
年龄:<jsp:getProperty property="age" name="n2"/><br />
结果:
b)动态包含。
通过与静态包含进行比较来认识动态包含
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<h1>静态包含与动态包含</h1>
<fieldset>
<legend>静态包含</legend>
<%@ include file="a.jsp" %>
</fieldset>
<fieldset>
<legend>动态包含</legend>
<jsp:include page="a.jsp"></jsp:include>
</fieldset>
尽管从结果上看没有什么区别,但看其内部就会发现动态包含与静态包含的不同之处。
经典面试题: 静态包含与动态包含的区别:
1. 静态包含是先包含,后编译; 最终只能生成一个java源文件!class也是一个。动态包含是先编译,后包含。最终生成多个java源文件!class也是多个。
静态包含:
动态包含:
2. 静态包含不能用变量名作为路径; 动态包含就可以用变量名作为路径。
3. 静态包含不能给被包含的目标jsp页面传递参数;动态包含就可以!
4. 一个页面上的多个静态包含的页面中,不能有同名的变量;动态包含就可以!
c) 转发
暂时可以理解为不用点击,直接跳转的链接
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<h1>转发</h1>
<<jsp:forward page="a.jsp"></jsp:forward>
a.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<h2>a.jsp</h2>
哈哈哈,我是a.jsp页面
从上面的图片可以看出,浏览器访问的是index.jsp页面,但是响应的却是a.jsp页面。因而不难理解转发的概念。
d) 传递参数请求
传递参数有好几种办法:
1. 通过表单。
2. 不需要表单,直接在url后面加上?参数名=参数值&参数名2=参数值2…..
3. 直接在超链接的url后面写出参数即可!
4. 通过window.location=”url?请求参数”
5.
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<h1>传递参数</h1>
<jsp:include page="a.jsp">
<jsp:param value="薛之谦" name="name"/>
<jsp:param value="高磊鑫" name="name2" />
</jsp:include>
a.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<h2>a.jsp</h2>
<%=request.getParameter("name")%><br />
<%=request.getParameter("name2")%>
结果: