首页 > 代码库 > JSP_Notes_1

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="http://www.mamicode.com/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>

JSP_Notes_1