一、前期准备工作:
我这里使用的开发环境组合是是MyEclipse2014+Tomcat8+JDK7+SQL Server2012+sqljdbc4.jar:
(1)JDK版本:jdk1.7.0_80和jre7 (MyEcplise2014没有jdk8,所以临时换了jdk7)
(2)Web服务器:apache-tomcat-8.5.20
(3)IDE工具:MyEcplise2014
(4)数据库:SQL Server2012(暂时用这个,个人比较喜欢MySQL,后面会换成MySQL)
( 5 ) SQLServer2012的jdbc驱动程序包:sqljdbc4.jar=>微软官网下载:(http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774)
二、实战演练
好了,接下来我就直接演示我入手的第一个例子:采用JSP+JDBC开发一个Web登录程序。
( 1 )分析:
首先,我要自己要的效果是什么?
既然是登录页面,那首先肯定要有用户名和密码,那这些用户名和密码就要用到数据库;
所以我总结了三个步骤(前中后):
1、页面需求(前端效果):用户名、密码、按钮(前面需要做界面效果)
2、数据库(后台处理):通过JDBC验证数据库,运用Java知识(中间要用Java代码结合JDBC处理数据库后台)
3、需求效果:返回成功与失败信息(最后要返回程序的结果)
所以我们先设计最终效果的设计页面(也就是你想要的蓝图,这里我随便参考人家设置的一个模板):
大家也可以去博客园看看这位园主的文章http://www.cnblogs.com/yibao/p/6441213.html
好了,想知道自己要做什么就简单了,我一开始是先建好了数据库,不过我现在觉得作为新手可以先一步步来,因为这就是一个很简单的网页嘛,
所以就先打开MyEcplise2014先新建一个web项目,这里我和书上一样命名为jsp_jdbc,然后如图建立login.jsp文件一样
再新建logincheck.jsp、main.jsp、error.jspjsp文件。
然后就开始哒哒哒哒哒的写代码啦,哈哈
login.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="gb2312"%> 2 3 <html> 4 <head> 5 <title>简易留言板</title> 6 </head> 7 <body style="background-color: #E3E3E3"> 8 <div style="text-align:center"> 9 <h1 style="color:red">登录</h1> 10 <form id="indexform" name="indexForm" action="logincheck.jsp" method="post" > 11 <table style="border:0;margin:0px auto;"> 12 <tr > 13 <td >用户名:</td> 14 <td><input type="text" name="username"></td> 15 </tr> 16 <tr> 17 <td>密码:</td> 18 <td><input type="password" name="password"> 19 </td> 20 </tr> 21 </table> 22 <br> 23 <input type="submit" value="登录" style="color:#BC8F8F"> 24 <input type="reset" value="重置" style="color:#BC8F8F"> 25 </form> 26 如果没有注册单击 <a href="" style="color:blue">这里</a>注册! 27 <!-- 这是进入注册页面的第二种方法 28 <form action="zhuce.jsp"> 29 <input type="submit" value="注册" style="color:#BC8F8F"> 30 </form> 31 --> 32 </div> 33 </body> 34 </html>
写完这个页面接下来要干嘛?当然什么都不能干,如果你是在要干,那就自己好好的欣赏这个页面咯
一开始我也说了,设计好界面是第一步,然后就要处理后台的数据库啦!
1、用SQLServer2012创建名为login的数据库,并创建一个用户表user,结构如下:
2、创建数据库连接:
(1)因为连接的是sql server2012,所以先下载好所需要的jdbc驱动包程序sqljdbc4.jar;
(2)打开myecplise2014,建立与数据源的连接:【MyEclipseDatabase Explorer】=>【New…】,
哎呀,与想象中不那么顺利,不过问题不大,别急,我们一步步来,它的提示是Driver class找不到!
那我们就哪里不会点哪里~步步高点读机,妈妈再也不用担心我的学习啦,走题啦不好意思,我们继续,
这有可能是下载在sqljdbc4.jar包有问题,对此我重新进入官网发现在相关资源下拉还有3个不同的版本,
所以我再次下载,但是发现我应该要下是42版本的。(因为一开始我用的还是jdk8)
结果:还是不行!!!(那我先暂时跳过连接数据库部分,可能一开始还有很多不明白的地方会让我钻进牛角尖,后面再处理试试,不行我就换MySql)
不过执着的我又不断的上网查资料,最后我还是觉得jdk8版本太高了与MyEclipse2014兼容性有点问题,所以就开始换成jdk7来试了,
至于配置Tomcat8+JDK1.7我就不多说了,主要提一下Microsoft JDBCDriver 4.0 for SQL Server这个驱动包的下载与安装配置:
微软官网下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=11774
下载sqljdbc_4.0.2206.100_chs.tar.gz(2.2M),解压文件,得到sqljdbc_4.0这个文件夹,并且打开里面只有一个目录chs,再进入里面,能看到sqljdbc.jar和sqljdbc4.jar,因为我现在使用的是jre1.7版本,则忽略sqljdbc.jar。然后在我的本地路径F:\SqlServerDrivers下新建一个文件夹,命名为sqljdbc4,并只复制sqljdbc4.jar进去。
因为之前提示的是找不到类文件,说明我环境变量中肯定没有配置好,这应该才是报错的原因所在,
接下来我就要在环境变量中的CLASSPATH变量最后面追加 “; F:\SqlServerDrivers\sqljdbc4\sqljdbc4.jar”
但是这还不完整!!!!
如果只是上面那一步也不行,然后我又不断找资料,(可以参考文章:http://blog.csdn.net/u012453607/article/details/42456505),看完这个我突然醍醐灌顶,终于发现我竟然忘记最重要的事,
就是我既然知道了是类文件的问题那就不应该遗忘还有jdk里面的类文件,还有需要支持的服务器的连接性问题。所以最终按照那位园主的建议执行以下4个步骤:
(1) 我们需要将sqljdbc4.jar类库文件拷贝到C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext目录下。(看你安装在哪个盘,下同)
(2) 我们需要将sqljdbc4.jar类库文件拷贝到C:\Program Files\Java\jre7\lib\ext目录下。
(最好是,只要是jre文件夹,都复制一个sqljdbc4.jar到jre7\lib\ext里去!!)
(3) 如果是使用Tomcat做服务器(我使用的是Tomcat8),那么我们需要将sqljdbc4.jar类库文件拷贝到F:\tomcat\apache-tomcat-8.5.20\li目录下。
(4) 如果是使用Tomcat做服务器,那么我们需要将sqljdbc4.jar类库文件拷贝到F:\tomcat\apache-tomcat-8.5.20\webapps\examples\WEB-INF\lib目录下。
然后再次建立与数据源的连接:如下图所示,已成功建立连接啦!哈哈。
这样数据库就和MyEcplise连接上关系啦妈呀,真麻烦,可费劲了我不少时间去探索!!!!!
有了数据库的支持那接下来就继续处理剩下的3个jsp页面文件,我先附上图
logincheck.jsp
1 <%@ page language="java" pageEncoding="gb2312" import="java.sql.*"%> 2 <jsp:useBean id="SqlSrvDB" Scope="page" class="org.easybooks.test.jdbc.SqlSrvDBConn"/> 3 <html> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 6 <title>validate page</title> 7 </head> 8 <body> 9 <% 10 request.setCharacterEncoding("gb2312"); 11 String username=(String)request.getParameter("username"); 12 String password=(String)request.getParameter("password");//取出login.jsp的值 13 boolean validated=false; 14 //下面是数据库操作 15 String sql="select * from login"; 16 ResultSet rs=SqlSrvDB.executeQuery(sql);//运行上面的语句 17 while(rs.next()){ 18 if((rs.getString("username").trim().compareTo(username)==0)&&(rs.getString("password").compareTo(password)==0)){ 19 validated=true; 20 } 21 } 22 rs.close(); 23 SqlSrvDB.closeStmt(); 24 SqlSrvDB.closeConn(); 25 if(validated){ 26 %> 27 <jsp:forward page="main.jsp"/> 28 <% 29 }else{ 30 %> 31 <jsp:forward page="error.jsp"/> 32 <% 33 } 34 %> 35 </body> 36 </html>
mian.jsp
1 <%@ page language="java" pageEncoding="gb2312"%> 2 3 <html> 4 <head> 5 <title>留言板信息</title> 6 </head> 7 <body> 8 <%out.print(request.getParameter("username")); %>,你好!欢迎登录留言板。 9 </body> 10 </html>
error.jsp
1 <%@ page language="java" pageEncoding="gb2312"%> 2 3 <html> 4 <head> 5 <title>出错</title> 6 </head> 7 <body> 8 登录失败!单击 <a href="login.jsp" style="color:blue">这里</a>返回 9 </body> 10 </html>
到这一步就已经完成了“前”与“后”,那么就剩下“中”啦!如图建立包与新建类来连接数据库
(终于真正用到了Java代码)
SqlSrvDBConn.java
1 package org.easybooks.test.jdbc; 2 import java.sql.*; 3 public class SqlSrvDBConn { 4 private String driverStr = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 5 private String connStr = "jdbc:sqlserver://localhost:1433; DatabaseName=login"; 6 private String dbusername = "sa"; 7 private String dbpassword = "123456"; 8 private Connection conn; 9 private Statement stmt; 10 ResultSet rs; 11 public SqlSrvDBConn() { 12 stmt = null; 13 try{ 14 Class.forName(driverStr); 15 conn = DriverManager.getConnection(connStr, dbusername, dbpassword); 16 stmt = conn.createStatement(); 17 } catch (Exception e) { 18 System.out.println("数据连接失败!"); 19 } 20 rs=null; 21 } 22 public ResultSet executeQuery(String sql){ 23 try{ 24 stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 25 rs=stmt.executeQuery(sql); 26 }catch (Exception e) { 27 System.err.println("Data.executeQuery:"+e.getMessage()); 28 } 29 return rs; 30 } 31 public void closeStmt(){ 32 try { 33 stmt.close(); 34 } catch (SQLException e) { 35 System.err.println("Data.executeQuery:"+e.getMessage()); 36 } 37 } 38 public void closeConn(){ 39 try { 40 conn.close(); 41 } catch (SQLException e) { 42 System.err.println("Data.executeQuery:"+e.getMessage()); 43 } 44 } 45 }
最后选择好自己之前配置的服务器就准备测试啦
在浏览器中输入http://localhost:8080/jsp_jdbc/ (8080是我配置Tomcat时设置的端口号)
但是当输入数据库对应的数据时,出现错误:
所以又出现一个新问题啦,哎,真是一波三折呀!!!那怎样解决它呢,我们下回继续探讨啦