JSP_Notes_1
【1】jsp=html+java片段+jsp标签+js(css)jsp允许在页面里编写java代码,并且允许开发人员在页面里获得request,response等web开发常用对象,实现与浏览器的交互,所以jsp也是一种动态web开发技术。
【2】修改编码格式:Windows---->Preferences---->myeclipse Enterprise Workbench---->File and Editors----->JSP--->把这个目录下的Encoding选为你要设置
【3】访问每一个jsp都是访问servlet来响应你的请求,tomcat->work里
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.【HttpSession session】 = null;
final javax.servlet.【ServletContext application】;
final javax.servlet.【ServletConfig config】;
javax.servlet.jsp.【JspWriter out = null】;
final java.lang.Object 【page = this】;//这里的this就是指这个jsp对应的servlet,所以当你需要再jsp里使用有关servlet的信息时,可以直接用page.xxx
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
【4】服务器在调用你的jsp时,已经棒你把相关的参数传递进去了,例如request.所以在jsp里你都可以直接用。servlet里的ServletContext在jsp里就是application.
【5】Javabean就是一个封装数据的实体,是一个遵循特定写法的java类,需要满足三个要求:
1.这个java类必须具有一个无参的构造函数
2.属性必须私有化
3.私有化的属性必须通过public类型的方法暴露给其他的程序,并且方法的命名也必须遵循一定的命名规范。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
【1】服务器在调用JSP时,会直接帮你定义PageContext,Request,Session,ServletContext.
final javax.servlet.jsp.PageContext 【Context】;
javax.servlet.http.HttpSession 【sessio = null;
final javax.servlet.ServletContext 【application】;
final javax.servlet.ServletConfig 【config】;
javax.servlet.jsp.JspWriter 【out】 = null;
final java.lang.Object 【page】 = this; //当你要得到当前JSP对于的Servlet时,就可以使用page.xxx
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
<!-- usebean标签的标签体只在usebean实例化时才执行 -->
<body>
<jsp:useBean id="Person" class="xby.domain.Person" scope="page"></jsp:useBean>
<%=Person.getName() %>
</body>
【2】
<!-- 手动为bean属性赋值 -->
<jsp:useBean id="Person" class="xby.domain.Person" />
<jsp:setProperty name="Person" property="name" value="xby!"/>
<%=Person.getName() %>
【3】
<!-- 利用请求参数给bean属性赋值 -->
<jsp:useBean id="people" class="xby.domain.Person" scope="page"/>
<jsp:setProperty name="people" property="name" param="name"/>
<jsp:setProperty property="age" name="people" param="age"/>//支持把客户机的字符串输入进行8种基本输出类型的转换
<%=people.getName() %>
<br>
<%=people.getAge() %>
【4】
<!--相当于<%=Person.getName() %>,不过要是属性值为空,就会输出null-->
<jsp:getProperty property="name" name="people"/>
【5】EI表达式:(要是属性值为空,就会输出空的字符串)做数据输出很方便,不需要做任何的判断
【6】<%=%>脚本表达式:用于向浏览器输出数据
多个静态代码块,变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。JSP隐式对象的作用范围仅仅限于Servlet的_JSPService方法,所以在JSP声明中不能使用这些隐式对象。
【7】<% JAVA CODE %>JSP脚本片段:不同片段之间可以使用其他模板。而且各个片段之间代码可以相互访问
【8】<%-- --%>JSP注释 <!-- -->HTML注释(浏览器认识)
【8】<%! %>JSP声明:JSP页面中编写的所有代码,默认会被翻译到SEVLET的service方法中,而JSP声明代码会被翻译到_JSPService方法的外面,所以JSP声明可以用于定义JSP页面转换成Servlet程序的静态代码块,成员变量和方法。
【9】JSP指令(directive):是为了JSP引擎设计的,他们并不处理产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。page Include taglib
<%@ 指令 contentType="text/html;charset=gb2312"%>
【10】error page:
<error-page>
<exception-type></exception-type>
<location></location>
</error-page>
<error-page>
<error-code>404</error-code>
<location></location>
</error-page>
【11】9大隐式对象:
1.HttpServletRequest request;
2.HttpServletResponse response;
3.PageContext pageContext;
4.HttpSession session;
5.ServletContext application;
6.ServletConfig config;
7.JspWriter out;
8.Object page;(this)
9.Exception
pageContext对象不仅封装了对其他8大隐式对象的引用,而且它自身还是一个域对象,可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其他资源,检索其他域对象中的属性等。
【12】JSP标签:
1.编写一个实现tag接口的java类
2.在tld文件中对标签处理类进行描述(WEN-INF下)
3.在JSP页面中导入和使用自定义标签
<jsp:forward page="/"></jsp:forward>
<jsp:include page=""></jsp:include> <%--相等于pageContext.include(""); --%>
<jsp:param value="" name=""/>
【13】标签处理类:编写一个实现Tag接口的JAVA类,把页面java代码移到这个java类中
编写标签库描述符文件(tld),在tld文件中把标签处理类描述成一个标签。
【14】Tag :JSP页面不可以有一行JAVA代码 因为JSP引进了pageContext
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://xby.com" prefix="ViewIp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tag Lib</title>
</head>
<body>
您当前的IP是:<ViewIp:ViewIp/>
</body>
</html>
/////////////////////////////////////////////////////////////////////////////////
package xby.web;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class ViewIpTag extends TagSupport {
@Override
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
JspWriter out = pageContext.getOut();
HttpServletRequest request = (HttpServletRequest)this.pageContext.getRequest();
String ip = request.getRemoteAddr();
try {
out.write(ip);
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
return super.doStartTag();
}
/////////////////////////////////////////////////////////////////////////////////////
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>xby</short-name>
<uri>http://xby.com</uri>
<tag>
<name>ViewIp</name>
<tag-class>xby.web.ViewIpTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>