`
zhulin014
  • 浏览: 51018 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

我的JSP学习笔记

阅读更多

 

 

0. JSP简介

1. JSP语法

2. 内置对象

3. JAVABEAN

4. 文件操作

5. 数据库操作

6. JAVA SERVLET

7. JSP实用XML
 

附录一:数据库连接池的实现

附录二:servlet例子

附录三:servlet部署文件例子

附录四:DOM例子

 

 
0.JSP简介

 

 

 

 

 

 

 

配置环境变量:

JAVA_HOME——c:/java/jdk

CLASSPATH——c:/java/jdk/lib/tool.jar…

Path——c:/java/jdk/bin

 

CATALINA——c:\tomcat

CATALINA_BASE——c:\tomcat

CATALINA_HOME——c:\tomcat

Tomcat_home——c:\tomcat

 

Tomcat配置虚拟目录:

conf/server.xml中修改:

<Context path=”/hello” docBase=”d:/myjsp/zhulin” debug=”0” reloadable=”true”/>

 

当多个用户同时访问一个JSP页面时,Tomcat服务器为每个客户启动一个线程,该线程负责执行常驻内存的字节码文件来响应响应客户的请求。

1.JSP语法  

 

<%!  %>标记之间声明变量和方法

 

<%   %>程序片

<%=  %>java表达式

 

<!-- --> html注释

<%-- --%>JSP注释

 

指令标记:

<%@ include file=”” %> JSP页面某处将某个文件整体嵌入

 

动作标记:

<jsp:include page=”a.jsp”/>          <jsp:include page=”a.jsp”>

                                                                          <jsp:param name=”a” value=”<%=mya %>”/>        …

</jsp:include>

 

此标记也是将一个文件嵌入到当前页面,但与指令标记include所不同的是:

指令标记include:在编译阶段就处理所需的文件,页面执行速度快;

动作标记include:JSP页面运行时才加载,处理速度慢,其优点是可以用param标签。

 

<jsp:forward page=”a.jsp”/>        <jsp: forward page=”a.jsp”>

                                                                          <jsp:param name=”a” value=”<%=mya %>”/>        …

</jsp: forward >

停止当前页面的继续执行,而转向执行page指定的页面。且浏览器的url地址不变

 

 

 

 

 

 

 

2.内置对象

Request:可以获取客户机信息

 

Response:可以设置contentType属性

                     也可以设置HTTP头,如response.setHeader(“refresh”,”5”);//5秒刷新一次

                     可以用于重定向:response.sendRedirect(url);

 

Sessionvoid setAttribute(String,Object)

                    Object getAttribute(String)

                    Void remove(String)

           tomcatconf/web.xml中设置session时间,单位为分钟:

           <session-config><session-timeout>30</session-timeout></session-config>

                   

Applicationvoid setAttribute(String,Object)

                             Object getAttribute(String)

                             Void removeAttribute(String)

 

 

Out:输出流 out.println();

3.JAVABEAN

javabean类的构造方法必须是public,无参数的

 

使用bean时:1. 先倒入该类所在的包:<%@ page import="zhulin.*" %>

                 2. 加载要使用的bean:<jsp:usebean id="user" class="zhulin.user" scope="page" />

                 3. 使用<jsp:setProperty name="user" property="*" />可以将当前表单中的控件的值设定给BEAN

4.文件操作

File类:获取文件(文件夹)本身的一些信息

用文件字节流读写文件:FileInputStream:顺序地读取文件,只要不关闭流,每次调用read方法都顺序地读取源中其余内容。

                             FileOutputStream:顺序地些文件,只要不关闭流,每次调用write方法都顺序地向输出流中写入内容。

用文件字符读写文件:FileReader,FileWriter

        字节流不能直接操作Unicode字符,所以在读汉字时容易出现乱码,而字符流就可以避免这个现象。

BufferedReader,BufferedWriter类用来提高读写效率。

 

RandomAccessFile流的指向既可以作为源也可以作为目的地。

5.数据库操作

数据库连接方式:

     1.JDBC-ODBC桥接器:优点:ODBC提供了数据库访问的通用平台,使得JDBC可以访问几乎所有类型的数据库。

                                 缺点:使得应用程序依赖于ODBC,移植性差。

                                 代码如:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                                            Connection con=DriverManager.getConnection("jdbc:odbc:zhulin","sa","sa");

                                            Statement st=con.createStatement();

                                            ResultSet rs=st.executeQuery("select * from users");

    2.用纯JAVA数据库驱动程序:用JAVA语言编写的数据库驱动叫做纯JAVA数据库驱动。

                                 代码如:Class.forName("org.gjt.mm.mysql.Driver");

                                            Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/zhulin","sa","sa");

                                            Statement st=con.createStatement();

                                            ResultSet rs=st.executeQuery("select * from users");

 

提高数据库操作的方法:

     1. 数据库连接池

     2. 使用预处理语句:Connection.prepareStatement(sql);

附录:数据库连接池的实现

6.JAVA SERVLET

创建一个servlet对象的类就是编写javax.servlet.http包中的HttpServlet类的子类。

 

为了能让TOMCAT服务器用字节码文件创建对象,必须为Tomcat服务器编写一个部署文件。

tomcat服务器通过读取web.xml管理servlet对象。

 

HttpServlet类的方法:

init()

service()

destory()

doGet()

doPost()

 

HttpServletResponse类的重定向方法:sendRedirect():重定向的目标页面无法使用request获取用户提交的数据。

RequestDispatcher类的转发方法:forward():转发的目标页面可以使用request获取用户提交的数据。

附录:servlet例子

        servlet部署文件例子

 

7.JSP实用XML

DOM(document object model):sun公司提供了DOM解析器,解析XML文件的API(java API for XML parsing,JAXP)

 附录:DOM例子

 

 

 

 

附录一:数据库连接池的实现

/**
 * 数据库连接池
 * 作者:朱林
 * 版本:1.0
 * 日期:2009.12.23
 */

package dboperate;
import java.sql.*;
import java.util.LinkedList;

public class Conlib
{
 String conn_str="jdbc:mysql://localhost:3306/zhulin";//---------数据库
 String username="zhulin";//---------------数据库用户名
 String password="000000";//-------------数据库密码
 int connum=10; //连接池容量
 
 LinkedList<Connection> list; //存放Connection对象的链表
 
 /**
  * 初始化
  */
 public Conlib()
 {
  try
  {
   Class.forName("org.gjt.mm.mysql.Driver");
  }
  catch(java.lang.ClassNotFoundException e)
  {
   System.err.println("驱动登记异常:"+e.getMessage());
  }
  
  list=new LinkedList<Connection>();
  
  //创建连接池
  for(int k=0; k<connum; k++)
  {
   try
   {
    Connection conn=DriverManager.getConnection(conn_str,username,password);
    list.add(conn);
   }
   catch(SQLException ex)
   {
    System.err.println("数据库连接异常:"+ex.getMessage());
   }
  }
 }
 
 /**
  * 获取连接池中的一个连接
  */
 public synchronized Connection getOneConnection()
 {
  if(list.size()>0)
  {
   return list.removeFirst();
  }
  else
   return null;
 }
 
 /**
  * 放回一个连接
  */
 public synchronized void putBackOneConnection(Connection con)
 {
  list.addFirst(con);
 }
}

 

 

附录二:servlet例子

package com.akazam;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class helloservlet extends HttpServlet
{

//init完成必要初始化工作
 public void init(ServletConfig config) throws ServletException
 {
  super.init(config);
 }
 

//当servlet对象创建后会自动调用执行service函数,响应客户的请求
 public void service(HttpServletRequest request,HttpServletResponse response) throws IOException
 {
  response.setContentType("text/html;charset=GBK"); //设置响应的MIME类型
  PrintWriter out=response.getWriter(); //获取一个向客户发送数据的输出流
  out.println("<html><body>hello</body></html>");
 }
}

 

 

附录三:servlet部署文件例子

<?xml version="1.0" encoding="UTF-8"?>

<web-app>

      <servlet>

            <servlet-name>hello</servlet-name>

            <servlet-class>com.akazam.helloservlet </servlet-class>

      </servlet>

      <servlet-mapping>

            <servlet-name>hello</servlet-name>

            <url-pattern>/hello</url-pattern>

       </servlet-mapping>

</web-app>

 

 

 

附录四:附录:DOM例子

package com.akazam;
import java.io.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;

public class DOMparse
{
 public DOMparse()
 {
  try
  {
   //创建DOCUMENT对象读取XML文件
   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
   DocumentBuilder builder=factory.newDocumentBuilder();
   Document document=builder.parse(new File("d:\\a.xml"));
   
   Element root=document.getDocumentElement(); //获取根节点
   NodeList elementNodes=root.getElementsByTagName("姓名");
   //...
  }
  catch(Exception e){}
 }
}

 

 

 

 

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics