JSP实用教程实验八JDBC操作数据库

实验八  JDBC操作数据库

一、实验目的

1. JDBC连接数据库。

2. 对数据库的增删改查操作。

3. 分页操作。

4. 掌握数据库连接及数据处理技术,理解分页技术,掌握一种基本的分页技术。

二、实验内容

1、教材8.12.1节 查询成绩。

2、教材8.12.2节 管理学生成绩。

3、教材8.12.3节 小星星广告网。

三、实验步骤

1.查询成绩

① 实验代码

文件:ch8_1.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
	<style>
		#tom{
			font-family:宋体;font-size:28;color:black 
		}
	</style>
<HTML>
	<body bgcolor = "#ffccff"> 
		<form action="ch8_2.jsp" id="tom" method="post" >
			输入学号或姓名查询成绩:<br>
			<input type="text" id="tom" name="mess" /><br>
			<input type="submit" id="tom" name="submit" value="按姓名查询"/>
			<input type="submit" id="tom" name="submit" value="按学号查询"/>
		</form> 
	</body>
</HTML>

文件:ch8_2.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ page import="java.sql.*" %>
	<style>
		#tom{
			font-family:宋体;font-size:18;color:blue 
		}
	</style>
<HTML>
	<body bgcolor="#EEDDFF">
		<%  
		request.setCharacterEncoding("utf-8");
		String mess = request.getParameter("mess");
		mess = mess.trim();
		String submit = request.getParameter("submit");
		if(mess.length() == 0){
		response.sendRedirect("ch8_1.jsp");
		return;
		}
		Connection con=null;
		Statement sql; 
		ResultSet rs;
		try{  
		Class.forName("com.mysql.cj.jdbc.Driver"); 
		}
		catch(Exception e){
			out.print("<h1>"+e);
		}
		String url = "jdbc:mysql://localhost:3306/student?"+
		"useSSL=false&serverTimezone=CST&characterEncoding=utf-8";
		String user ="root";
		String password ="1234";
		out.print("<table border=1>");
		out.print("<tr>");
		out.print("<th id=tom width=100>"+"学号");
		out.print("<th id=tom width=100>"+"姓名");
		out.print("<th id=tom width=50>"+"数学成绩");
		out.print("<th id=tom width=50>"+"英语成绩");
		out.print("</tr>"); 
		try{
			con = DriverManager.getConnection(url,user,password);
			sql=con.createStatement(); 
			String SQL = null;
			if(submit.contains("姓名")){
			SQL = "SELECT * FROM scoreReport where name like '%"+mess+"%'";
		}
			else if(submit.contains("学号")){
			SQL = "SELECT * FROM scoreReport where id='"+mess+"'"; 
			}
			rs=sql.executeQuery(SQL);
			while(rs.next()) {
			out.print("<tr>");
			out.print("<td id=tom>"+rs.getString(1)+"</td>"); 
			out.print("<td id=tom>"+rs.getString(2)+"</td>");
			out.print("<td id=tom>"+rs.getInt(3)+"</td>");
			out.print("<td id=tom>"+rs.getInt(4)+"</td>");
			out.print("</tr>") ; 
		}
		out.print("</table>");
		con.close();
		}
		catch(SQLException e) { 
		out.print("<h1>"+e);
		}
	%>
	</body>
</HTML>

② 运行结果

2.管理学生成绩

① 实验代码

文件:context.xml

<?xml version="1.0" encoding="utf-8" ?>
<Context>
  <Resource 
    name = "studentConn"
    type ="javax.sql.DataSource"
    driverClassName = "com.mysql.cj.jdbc.Driver"
    url = "jdbc:mysql://127.0.0.1:3306/student?
        &serverTimezone=CST&characterEncoding=utf-8"
    username ="root"
    password ="1234"
    maxActive ="5"
    maxIdle ="5"
    minIdle ="1"
    maxWait ="5000" 
   /> 
</Context>

 文件:ch8_3.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
	<style>
		#tom{
			font-family:宋体;font-size:28;color:black 
		}
	</style>
	<%  
	request.setCharacterEncoding("utf-8");
    Connection con=null;
    PreparedStatement pre=null; 
    ResultSet rs;
    Context  context =new InitialContext();
    Context  contextNeeded=(Context)context.lookup("java:comp/env");
    DataSource ds=
    (DataSource)contextNeeded.lookup("studentConn");
    try{ 
      con = ds.getConnection();
    }
    catch(Exception exp){ }
    String updateSQL = 
	"update scoreReport set name =?,mathScore=?,englishScore=? where id=?";
    String insertSQL ="insert into scoreReport values(?,?,?,?)";
    String deleteSQL ="delete from scoreReport where id =?";
    String querySQL = "select * from scoreReport where id =?";
    String mess = request.getParameter("submit");
    if(mess == null) mess ="";
    String id = request.getParameter("id");
    String name = request.getParameter("name");
    String math = request.getParameter("mathScore");
    String english = request.getParameter("englishScore");
    try{
      if(mess.contains("查看")){
         pre = con.prepareStatement(querySQL);
         pre.setString(1,id);
         rs = pre.executeQuery();
         if(rs.next()){
           id = rs.getString(1);
           name = rs.getString(2); 
           math = rs.getString(3);
           english = rs.getString(4);
         }
      }
      else if(mess.contains("更新")){
         pre = con.prepareStatement(updateSQL);
         pre.setString(1,name);
         pre.setInt(2,Integer.parseInt(math));
         pre.setInt(3,Integer.parseInt(english));
         pre.setString(4,id);
         pre.executeUpdate();
         out.print("<h3>更新成功</h3>");
      }
      else if(mess.contains("添加")){
         pre = con.prepareStatement(insertSQL);
         pre.setString(1,id);
         pre.setString(2,name);
         pre.setInt(3,Integer.parseInt(math));
         pre.setInt(4,Integer.parseInt(english));
         pre.executeUpdate();
         out.print("<h3>添加成功</h3>");
      }
       else if(mess.contains("删除")){
         pre = con.prepareStatement(deleteSQL); 
         pre.setString(1,id);
         pre.executeUpdate();
         out.print("<h3>删除成功</h3>");
      }
      con.close();//连接放回连接池。
    }
    catch(SQLException e) { 
       out.print("<h1>学号不能重复");
       try{
         con.close();//连接放回连接池。
       }
       catch(SQLException exp){}
    }
%>
<HTML>
	<body bgcolor = "#ffccff"> 
		<form action="" id="tom" method="post">
			输入学号查看或删除(信息):<br>
			<input type="text"   id="tom" name="id" size=10 /><br>
			<input type="submit" id="tom" name="submit" value="查看"/>
			<input type="submit" id="tom" name="submit" value="删除"/>
		</form>
		<form action="" id="tom" method="post">
			更新(或添加)
			<input type="text" id="tom" name="id" value =<%=id%> size=9 />
			学号的信息:
			<br>姓名:
			<input type="text" id="tom" name="name" value ='<%=name%>'size=11/>
			<br>数学成绩:
			<input type="text" id="tom" name="mathScore" value ='<%=math%>'size=7 />
			<br>英语成绩:
			<input type="text" id="tom" name="englishScore" value ='<%=english%>'size=7/>
			<br><input type="submit" id="tom" name="submit" value="更新"/>
			<input type="submit" id="tom" name="submit" value="添加"/>
		</form> 
	</body>
</HTML>

② 运行结果

3.小星星广告网

① 实验代码

文件:context2.xml

<?xml version="1.0" encoding="utf-8" ?>
<Context>
  <Resource 
    name = "adverConn"
    type ="javax.sql.DataSource"
    driverClassName = "com.mysql.cj.jdbc.Driver"
    url = "jdbc:mysql://127.0.0.1:3306/adertisement?
        &serverTimezone=CST&characterEncoding=utf-8"
    username ="root"
    password ="1234"
    maxActive ="15"
    maxIdle ="15"
    minIdle ="1"
    maxWait ="1000" 
   /> 
</Context>

 文件:head.jsp

<style>
   #jerry{
      font-family:隶书;font-size:58;color:blue;
      
   }
   #tom{
      font-family:楷体;font-size:33;color:blue;
      
   }
</style>
<div align="center">
<p id=jerry>小星星广告网</p>
<table  width="600" align="center" border="0" >
   <tr valign="bottom">
   <td id=tom><a href="register.jsp">注册</a></td>
   <td id=tom><a href="login.jsp">登录</a></td>
   <td id=tom><a href="publishAdver.jsp">发布广告</a></td>
   <td id=tom><a href="browseAdver.jsp">浏览广告</a></td>
   <td id=tom><a href="index.jsp">主页</a></td>
</tr>
</table>
</div>

文件:index.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<title>小星星广告网</title>
<HEAD><%@ include file="head.txt" %></HEAD>
<style>
	#ok{
		font-family:楷体;font-size:50;color:green 
	}
</style>
<HTML>
	<body bgcolor ="pink">
		<center id ="ok">
			欢迎注册,发布广告。
		</center>
	</body>
</HTML>

文件:web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app>
  <servlet> 
      <servlet-name>registerServlet</servlet-name>
      <servlet-class>handle.data.HandleRegister</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>registerServlet</servlet-name>
      <url-pattern>/registerServlet</url-pattern>
  </servlet-mapping>
  <servlet>
      <servlet-name>loginServlet</servlet-name>
      <servlet-class>handle.data.HandleLogin</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>loginServlet</servlet-name>
      <url-pattern>/loginServlet</url-pattern>
  </servlet-mapping>
  <servlet>
        <servlet-name>upFile</servlet-name>
        <servlet-class>handle.data.UpFile</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>upFile</servlet-name>
        <url-pattern>/upFile</url-pattern>
    </servlet-mapping>
</web-app>

文件:register.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<jsp:useBean id="userBean" class="save.data.Register" scope="request"/>
<HEAD><%@ include file="head.txt" %></HEAD>
<title>注册页面</title>
<style>
   #ok{
      font-family:宋体;font-size:26;color:black; 
   }
</style>
<HTML>
	<body id="ok" bgcolor ="cyan">
		<form action="registerServlet" id=ok method="post">
			用户名由字母、数字、下划线构成,*注释的项必须填写。<br>
			*用户名称:<input type=text id=ok name="logname" /><br>
			*用户密码:<input type=password id=ok name="password"/><br>
			*重复密码:<input type=password id=ok name="again_password"/><br>
			<input type=submit  id=ok value="提交"><tr>
		</form>
		注册反馈:
		<jsp:getProperty name="userBean" property="logname"/>
		<jsp:getProperty name="userBean"  property="backNews" /> 
	</body>
</HTML>

文件:Register.java

package save.data;
public class Register{  
    String  logname="",
            backNews="请输入注册信息"; 
    public void setLogname(String logname){  
       this.logname=logname;
    }
    public String getLogname(){  
       return logname;
    }
    public void setBackNews(String backNews){  
       this.backNews=backNews;
    }
    public String getBackNews(){  
       return backNews;
    }
}

文件:Encrypt.java

package handle.data;
public class Encrypt {   
   static String encrypt(String sourceString,String password) { 
       char [] p= password.toCharArray();
       int n = p.length;
       char [] c = sourceString.toCharArray();
       int m = c.length; 
       for(int k=0;k<m;k++){
            int mima=c[k]+p[k%n];
            c[k]=(char)mima; 
       }
       return new String(c);
    }
}

文件:HandleRegister.java

package handle.data;
import save.data.Register;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.sql.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class HandleRegister extends HttpServlet {
   public void init(ServletConfig config) throws ServletException { 
      super.init(config);
   }
   public  void  service(HttpServletRequest request,
                         HttpServletResponse response) 
                         throws ServletException,IOException {
      request.setCharacterEncoding("utf-8");
      Connection con =null; 
      PreparedStatement sql=null; 
      Register userBean=new Register();
      request.setAttribute("userBean",userBean);
      String logname=request.getParameter("logname").trim();
      String password=request.getParameter("password").trim();
      String again_password=request.getParameter("again_password").trim();
      if(logname==null)
           logname="";
      if(password==null)
           password="";
      if(!password.equals(again_password)) { 
         userBean.setBackNews("两次密码不同,注册失败,");
         RequestDispatcher dispatcher= 
         request.getRequestDispatcher("register.jsp");
         dispatcher.forward(request, response);
         return;
      }
      boolean isLD=true;
      for(int i=0;i<logname.length();i++){
          char c=logname.charAt(i);
          if(!(Character.isLetterOrDigit(c)||c=='_')) 
             isLD=false;
      } 
      boolean boo=logname.length()>0&&password.length()>0&&isLD;
      String backNews="";
      try{   Context  context = new InitialContext();
             Context  contextNeeded =
                      (Context)context.lookup("java:comp/env");
             DataSource ds=
             (DataSource)contextNeeded.lookup("adverConn");
             con= ds.getConnection();
             String insertCondition="INSERT INTO user VALUES (?,?)";
             sql=con.prepareStatement(insertCondition);
             if(boo){
               sql.setString(1,logname);
               password = 
               Encrypt.encrypt(password,"javajsp");
               sql.setString(2,password);
               int m=sql.executeUpdate();
               if(m!=0){
                  backNews="注册成功";
                  userBean.setBackNews(backNews);
                  userBean.setLogname(logname);
               }
             }
             else {
                 backNews="信息填写不完整或名字中有非法字符";
                 userBean.setBackNews(backNews);  
             }
             con.close();
      }
      catch(SQLException exp){
             backNews="该会员名已被使用,请您更换名字"+exp;
             userBean.setBackNews(backNews); 
      }
      catch(NamingException exp){
             backNews="没有设置连接池"+exp;
             userBean.setBackNews(backNews); 
      }
      finally{
        try{
             con.close();
        }
        catch(Exception ee){}
      } 
      RequestDispatcher dispatcher= 
      request.getRequestDispatcher("register.jsp");
      dispatcher.forward(request, response);
   }
}

文件:login.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<jsp:useBean id="loginBean" class="save.data.Login" scope="session"/>
<HEAD><%@ include file="head.txt" %></HEAD>
<title>登录页面</title>
	<style>
		#tom{
			font-family:宋体;font-size:30;color:black; 
		}
	</style>
<HTML>
	<body id="tom" bgcolor ="pink">
		<form action="loginServlet" method="post">
			登录用户:<input type="text" id="tom" name="logname" size=12><br>
			输入密码:<input type="password" id="tom" name="password" size=12><br>
			<input type="submit" id="tom" value="提交"><br>
			登录反馈信息:<br>
			登录名称:<br><jsp:getProperty name="loginBean" property="logname"/>
			<jsp:getProperty name="loginBean" property="backNews"/>
		</form>
	</body>
</HTML>

文件:Login.java

package save.data;
import java.util.*;
public class Login {
    String logname="",
           backNews="未登录";
    public void setLogname(String logname){  
       this.logname = logname;
    }
    public String getLogname(){
       return logname;
    }
    public void setBackNews(String s) {
       backNews = s;
    } 
    public String getBackNews(){
       return backNews;
    }
}

文件:HandleLogin.java

package handle.data;
import save.data.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.sql.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class HandleLogin extends HttpServlet{
   public void init(ServletConfig config) throws ServletException{
      super.init(config);
   }
   public void service(HttpServletRequest request,
                       HttpServletResponse response) 
                       throws ServletException,IOException{
      request.setCharacterEncoding("utf-8");
      Connection con =null; 
      Statement sql; 
      String logname=request.getParameter("logname").trim(),
      password=request.getParameter("password").trim();
      password = Encrypt.encrypt(password,"javajsp");
      boolean boo=(logname.length()>0)&&(password.length()>0);  
      try{ 
           Context  context = new InitialContext();
           Context  contextNeeded=
                    (Context)context.lookup("java:comp/env");
           DataSource ds=
           (DataSource)contextNeeded.lookup("adverConn");
            con= ds.getConnection();//使用连接池中的连接。
           String condition="select * from user where logname = '"+
                             logname+"' and password ='"+password+"'";
           sql=con.createStatement();  
           if(boo){
              ResultSet rs=sql.executeQuery(condition);
              boolean m=rs.next();
              if(m==true){ 
                  //调用登录成功的方法:
                  success(request,response,logname,password); 
                  RequestDispatcher dispatcher=
                  request.getRequestDispatcher("login.jsp");
                  dispatcher.forward(request,response);
              }
              else{
                  String backNews="您输入的用户名不存在,或密码不般配";
                  //调用登录失败的方法:
                  fail(request,response,logname,backNews); 
              }
           }
           else{
                  String backNews="请输入用户名和密码";
                  fail(request,response,logname,backNews);
           }
           con.close();
      }
      catch(SQLException exp){
          String backNews=""+exp;
          fail(request,response,logname,backNews);
      }
      catch(NamingException exp){
          String backNews="没有设置连接池"+exp;
          fail(request,response,logname,backNews); 
      }
      finally{
        try{
            con.close();
        }
        catch(Exception ee){}
      } 
   }
   public void success(HttpServletRequest request,
                       HttpServletResponse response,
                       String logname,String password) {
      Login loginBean=null;
      HttpSession session=request.getSession(true);
      try{  loginBean=(Login)session.getAttribute("loginBean");
            if(loginBean==null){
               loginBean=new Login();
               session.setAttribute("loginBean",loginBean);
               loginBean=(Login)session.getAttribute("loginBean");
            }
            String name =loginBean.getLogname();
            if(name.equals(logname)) {
               loginBean.setBackNews(logname+"已经登录了");
               loginBean.setLogname(logname);
            }
            else {  //数据模型存储新的登录用户:
                loginBean.setBackNews(logname+"登录成功");
                loginBean.setLogname(logname);
            }
      }
      catch(Exception ee){
            loginBean=new Login();  
            session.setAttribute("loginBean",loginBean);
            loginBean.setBackNews(""+ee);
            loginBean.setLogname(logname);
      }
   }
   public void fail(HttpServletRequest request,
                    HttpServletResponse response,
                    String logname,String backNews) {
        response.setContentType("text/html;charset=utf-8");
        try {
            PrintWriter out=response.getWriter();
            out.println("<html><body>");
            out.println("<h2>"+logname+"登录反馈结果<br>"+backNews+"</h2>") ;
            out.println("返回登录页面或主页<br>");
            out.println("<a href =login.jsp>登录页面</a>");
            out.println("<br><a href =index.jsp>主页</a>");
            out.println("</body></html>");
        }
        catch(IOException exp){}
    }
}

文件:publishAdver.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HEAD><%@ include file="head.txt" %></HEAD>
<title>发布广告页面</title>
<style>
   #tom{
      font-family:宋体;font-size:26;color:black; 
   }
</style>
<HTML>
	<body id ="tom" bgcolor="#FFBBFF">
		选择要上传的文件:<br>
		<form action="upFile" method="post" ENCTYPE="multipart/form-data">
			<input type="FILE" name="file" id ="tom" size="45"><br> 
			<input type="submit" id ="tom" name ="submit" value="提交">
		</form>
	</body>
</HTML>

文件:UpFile.java

package handle.data;
import save.data.Login;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class UpFile extends HttpServlet{
   public void init(ServletConfig config) throws ServletException{
      super.init(config);
   }
   public void service(HttpServletRequest request,
                       HttpServletResponse response)  
                       throws ServletException,IOException{
      String backMess ="";
      request.setCharacterEncoding("utf-8");
      Login loginBean=null;
      HttpSession session=request.getSession(true);
      String fileName=null;
      try{ 
         loginBean = (Login)session.getAttribute("loginBean");
         if(loginBean==null){
           response.sendRedirect("login.jsp");
           return;
         }
         else {
           boolean b =loginBean.getLogname()==null||
                   loginBean.getLogname().length()==0;
           if(b){
              response.sendRedirect("login.jsp");
              return;
           }
         }
      }
      catch(Exception exp){
           response.sendRedirect("login.jsp");
           return;
      }
      try{  
          String tempFileName=(String)session.getId();
          String webDir = request.getContextPath();
          webDir = webDir.substring(1); 
          File f= new File(""); 
          String path = f.getAbsolutePath();
          int index = path.indexOf("bin");
          String tomcatDir = path.substring(0,index);
          File dir=new File(tomcatDir+"/webapps/"+webDir+"/image");
          dir.mkdir();//建立目录。          
          File fileTemp=new File(dir,tempFileName);
          RandomAccessFile randomWrite = new RandomAccessFile(fileTemp,"rw");
          InputStream in=request.getInputStream();
          byte b[]=new byte[10000];
          int n;
          while( (n=in.read(b))!=-1){
             randomWrite.write(b,0,n);
          }
          randomWrite.close();
          in.close();
          RandomAccessFile randomRead=new RandomAccessFile(fileTemp,"r");
          int second=1;
          String secondLine=null;
          while(second<=2) { 
              secondLine=randomRead.readLine();
              second++;
          }
          int position=secondLine.lastIndexOf("=");
          fileName=secondLine.substring(position+2,secondLine.length()-1);
          randomRead.seek(0); 
          long  forthEndPosition=0;
          int forth=1;
          while((n=randomRead.readByte())!=-1&&(forth<=4)){  
             if(n=='\n'){
                forthEndPosition=randomRead.getFilePointer();
                forth++;
             }
          }
          byte  cc[]=fileName.getBytes("iso-8859-1");
          fileName=new String(cc,"utf-8");
          fileName =(loginBean.getLogname()).concat(fileName);
          File fileUser= new File(dir,fileName);
          randomWrite = new RandomAccessFile(fileUser,"rw"); 
          randomRead.seek(randomRead.length());
          long endPosition=randomRead.getFilePointer();
          long mark=endPosition;
          int j=1;
          while((mark>=0)&&(j<=6)) { 
              mark--;
              randomRead.seek(mark);
              n=randomRead.readByte();
              if(n=='\n'){
                 endPosition=randomRead.getFilePointer();
                 j++;
              }
          }
          randomRead.seek(forthEndPosition);
          long startPoint=randomRead.getFilePointer();
          while(startPoint<endPosition-1){
              n=randomRead.readByte();
              randomWrite.write(n); 
              startPoint=randomRead.getFilePointer();
          }
          randomWrite.close();
          randomRead.close();
          backMess ="上传成功"; 
          fileTemp.delete(); 
       }
       catch(Exception ee) {
          backMess ="没有选择文件或上传失败"; 
       }
       response.setContentType("text/html;charset=utf-8");
       try {
          PrintWriter out=response.getWriter();
          out.println("<html><body>");
          out.println("<h2>"+loginBean.getLogname()+":"+backMess+"</h2>") ;
          out.println("<br>返回主页");
          out.println("<br><a href =index.jsp>主页</a>");
          out.println("</body></html>");
       }
       catch(IOException exp){}
   } 
}  

文件:browseAdver.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<HEAD><%@ include file="head.txt" %></HEAD>
<title>浏览广告页面</title>
<style>
   #tom{
      font-family:宋体;font-size:26;color:black; 
   }
</style>
<HTML>
	<body id="tom" bgcolor="#EEDDFF">
	<% 
	Context  context = new InitialContext();
    Context  contextNeeded = (Context)context.lookup("java:comp/env");
    DataSource  ds = (DataSource)contextNeeded.lookup("adverConn");
    Connection con =null;
    Statement sql; 
    ResultSet rs;
    try{
       con = ds.getConnection();
       sql=con.createStatement(); 
       String SQL = "SELECT logname FROM user";//SQL语句。
       rs=sql.executeQuery(SQL);
       while(rs.next()) {
           String logname = rs.getString(1);
           out.print("<br><a href = showAdver.jsp?logname="+logname+
           ">浏览"+logname+"发布的广告</a>"); 
       }
       con.close() ;
    }
    catch(SQLException e) { 
       out.print("<h1>"+e);
    }
    finally{
        try{
          con.close();
        }
        catch(Exception ee){}
   } 
	%>	
	</body>
</HTML>

文件:showAdver.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<jsp:useBean id="play" class="save.data.Play" scope="session" />
<HEAD><%@ include file="head.txt" %></HEAD>
<title>浏览广告图</title>
<style>
   #textStyle{
      font-family:宋体;font-size:16;color:blue 
   }
</style>
<% request.setCharacterEncoding("utf-8");
%>
<%
   String logname = request.getParameter("logname");
   String webDir = request.getContextPath();
   webDir = webDir.substring(1);
%>
<jsp:setProperty  name="play" property="logname" value="<%= logname %>"/>
<jsp:setProperty  name="play" property="webDir" value="<%= webDir %>"/> 
<jsp:setProperty  name="play" property="index"  param = "index" /> 
<HTML>
	<center>
		<body bgcolor="pink">
			<p id=textStyle></p><br><%=play.logname%>的广告:<br>
			<image src = image/<jsp:getProperty name="play" property="showImage"/> 
			width =300 height =200></image><br> 
			<a href ="?index=<%=play.getIndex()+1 %>&logname=<%= play.logname %>">下一张</a>
			<a href ="?index=<%=play.getIndex()-1 %>&logname=<%= play.logname %>">上一张</a>
		</body>
	<center>
</HTML>

文件:Play.java

package save.data;
import java.io.*; 
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Play {
    public String logname;
    String pictureName[]; 
    public String showImage;
    public String webDir="D:\apache-tomcat-8.5.87\webapps\ch8_1\WEB-INF";  //web服务目录的名字。
    public String tomcatDir;
    int index = 0;
    public Play() {
        File f= new File(""); 
        String path = f.getAbsolutePath();
        int index = path.indexOf("bin");
        tomcatDir = path.substring(0,index);
    }
    public void setLogname(String s){
       showImage="";
       logname = s;
    }
    public void setWebDir(String s) {
        webDir = s;
        File dirImage = new File(tomcatDir+"/webapps/"+webDir+"/image"); 
        pictureName = dirImage.list(new FileStartName(logname));
    }
    public String getShowImage() {
       try {
         showImage = pictureName[index];
         return showImage; 
       }
       catch(Exception exp){
         return "flower.jpg";
       }
    } 
    public void setIndex(int i) {
       index = i; 
       if(index>=pictureName.length)
          index = 0;
       if(index < 0)
          index = pictureName.length-1;
    }
    public int getIndex() {
        return  index ; 
    } 
}
class FileStartName implements FilenameFilter {
    String logname=null;
    Pattern pattern;        
    Matcher matcher;         
    FileStartName(String logname) {
       this.logname = logname;
       pattern = Pattern.compile(logname); 
    }
    public  boolean accept(File dir,String name) {
       matcher = pattern.matcher(name); 
       if(matcher.find())
          return true;
       else
          return false;
    }              
}

② 运行结果

 

四、实验总结

本次实验应用了MySQL数据库与jsp页面的链接,前两个小实验比较简单,最后一个实验涉及到的页面较多,比较复杂,完成了一整套的小系统。将jsp页面、数据库和Java综合到了一起。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年12月26日
下一篇 2023年12月26日

相关推荐