zoukankan      html  css  js  c++  java
  • JSP自定义标签——调用数据库(通过id号搜索相关信息)

    一、创建新表(假设在master数据库下新建)

    二、连接数据库

    开始-->控制面板-->管理工具-->数据源-->系统DSN-->添加-->SQL Server-->名称:userdb-->服务器:(local)SQLEXPRESS或选择本机名-->下一步-->下一步-->打钩-更改默认的数据库为:master-->下一步-->完成

    三、DefinedTagData项目

    1、新建Java类:User

    package sample.model;
    public class User {
        private int id;
        private String name;
        private String phone;
        public void setId(int id){this.id=id;}//setId中的d必须小写
        public void setName(String name){this.name=name;}
        public void setPhone(String phone){this.phone=phone;}
        public int getID(){return id;}
        public String getName(){return name;}
        public String getPhone(){return phone;}
    }

    2、新建Java类:UserDAO

    package sample.model;
    
    import java.sql.*;
    public class UserDAO {
        private ResultSet rst;
        private Connection conn;
        private void open()throws Exception{
            String driver="sun.jdbc.odbc.JdbcOdbcDriver";
            String url= "jdbc:odbc:userdb";//test--定义的数据库的名称
            Class.forName(driver);
            conn=DriverManager.getConnection(url);
        }
        private void close()throws SQLException{
            if(rst!=null) rst.close();
            if(conn!=null) conn.close();
        }
        public void save(User user)throws Exception{
            String sql="";
            open();
            Statement stmt=conn.createStatement();
            rst=stmt.executeQuery(sql);
            close();
        }
        public void load(User user)throws Exception{
            String sql="use master    select name,phone from dbo.usera"+" where id = "+user.getID();
            open();
            Statement stmt=conn.createStatement();
            rst=stmt.executeQuery(sql);
            if(rst.next()){
                user.setName(rst.getString(1));
                user.setPhone(rst.getString(2));
            }
            close();
        }
    }

    3、创建TLD文件
      新建文件--> Web--> 标记库描述符

      TLD名称:Data  前缀:data

    4、创建标记处理程序

      新建文件--> Web-->标记处理程序

      类名:DataTag  包:sample.tag  要扩展的标记支持类:SimpleTagSupport

      TLD文件:WEB-INF--> tlds--> Data  新建属性:color和id

    package sample.tag;
    
    import javax.servlet.jsp.tagext.*;
    import javax.servlet.jsp.JspWriter;
    import javax.servlet.jsp.JspException;
    import sample.model.*;
    
    public class DataTag extends TagSupport {   
        private String id;//添加的属性
        public void setId(String id) {
            this.id = id;
        }
        private String color;//添加的属性
        public void setColor(String color) {
            this.color = color;
        }
        public int doStartTag(){         
            User user=new User();
            user.setId(Integer.parseInt(id));
            UserDAO dao=new UserDAO();
            try{    
                 dao.load(user); 
                 JspWriter out=pageContext.getOut(); 
                 String html="<br><b style="color:"+color+"">Welcome to Employee Detail Table.</b><br>";
                 html+=" <table border="1"><tr><th>员工ID</th><th>员工姓名</th><th>联系电话</th></tr>";
                 html+="<tr><td>"+user.getID()+"</td><td>"+user.getName()+"</td><td>"+user.getPhone()+"</td></tr></table>";
                 out.println(html);
            }catch(Exception e){
                 System.out.println(e.getMessage());
            }
            return SKIP_BODY;      
        }
        
        public int doEndTag() throws JspException{
            return EVAL_PAGE;
        }
    }

    PS:Data.tld内容

    <?xml version="1.0" encoding="UTF-8"?>
    <taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
      <tlib-version>1.0</tlib-version>
      <short-name>data</short-name>
      <uri>/WEB-INF/tlds/Data</uri>
    
      <tag>
        <name>DataTag</name>
        <tag-class>sample.tag.DataTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
          <name>id</name>
          <required>true</required>
          <rtexprvalue>true</rtexprvalue>
          <type>java.lang.String</type>
        </attribute>
        <attribute>
          <name>color</name>
          <required>true</required>
          <rtexprvalue>true</rtexprvalue>
          <type>java.lang.String</type>
        </attribute>
      </tag>
      <tag>
        <name>DataTable</name>
        <tag-class>sample.tag.DataTable</tag-class>
        <body-content>JSP</body-content>
        <attribute>
          <name>id</name>
          <required>true</required>
          <rtexprvalue>true</rtexprvalue>
          <type>int</type>
        </attribute>
        <attribute>
          <name>color</name>
          <required>true</required>
          <rtexprvalue>true</rtexprvalue>
          <type>java.lang.String</type>
        </attribute>
      </tag>
    </taglib>
    View Code

    5、index.jsp

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    
    <%@ taglib uri="/WEB-INF/tlds/Data" prefix="data"%>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>        
            <data:DataTag  id="1" color="blue"/>
        </body>
    </html>

    6、显示结果

  • 相关阅读:
    安装TeX字体
    【数学】对数的底为什么不能为负数
    算法设计的要求
    Windows HTTP Services
    为什么分母不能为0
    循环小数怎样变分数
    在win7环境下批量修改文件权限
    算法复杂度的极限证明
    深入理解 【有理数】、【无理数】、【虚数】
    kettle连接sqlserver
  • 原文地址:https://www.cnblogs.com/shelly0307/p/3688806.html
Copyright © 2011-2022 走看看