先看看我们在jsp中怎么连接数据库的?
其实我们都是在servlet中才连接数据库的, 也就是在jsp中动态显示数据, 而在servlet中后台处理数据, 即数据库的操作是放在servlet中的. 这样可达到数据与页面分离的效果, 更易于维护修改, 也是MVC模式的一大好处吧.
举个最简单的例子, 大家都写过的登陆页面:
login.html 登陆页面
<h1>用户登录</h1> <form action="checkLogin" method="POST"> 用户名:<input type= "text" name= "username"/><br> 密 码 :<input type="password" name="userpwd"/><br> <input type="submit" value="登录"/> </form>
我们写了个login.html 得到用户输入的用户名和密码, 然后我们需要一个checkLogin的servlet 来验证用户, 此时servlet 就要到数据库中通过用户名和密码查询是否有该用户, 判断之后再进行页面转发.
CheckLogin.java (这是一个servlet. 这里只列出了其中的数据处理部分)
// 得到输入的 用户名 和密码 String username = request.getParameter("username"); String userpwd = request.getParameter("userpwd"); Userinfo user = UserDao.checkUserLogin(username, userpwd); if (user != null) { // 如果用户验证成功~~转发到 loginOK.jsp 页面 显示 request.getRequestDispatcher("loginOK.jsp").forward(request, response); } else { //如果登录失败 request.getRequestDispatcher("loginFaile.jsp").forward(request, response); }
在这里面有个checkUserLogin的方法, 在是User 的DAO类中的一个方法. 我们在User的DAO中, 连接数据库, 执行sql查询, 返回User对象.
然后在配置文件中,添加servlet的配置
<servlet> <servlet-name>check</servlet-name> <servlet-class>servlet.checkLogin</servlet-class> </servlet> <servlet-mapping> <servlet-name>check</servlet-name> <url-pattern>/checkLogin</url-pattern> </servlet-mapping>
基本的流程是这样的:
再来看看PHP连接MySQL, 在php中直接访问数据库是相当简便的.
在jsp中, 我们把数据发给后台servlet处理, 而php虽然也是发给后台处理, 只不过后台也是php ---- 没有html的php 代码.
这个是大概的流程:
login.html 页面就一样了, 只是有个地方要小改, 即<form>里面action="checkLogin" 要改成action="checkLogin.php"
checkLogin.php
<?php //得到数据库连接 require_once('conn.php'); //得到post中传来的参数 $username = $_POST['username']; $password = $_POST['userpwd']; $sql = "select * from userinfo where username = '" .$username. "' and userpwd = '" .$password. "'"; echo $sql; $rs = mysql_query($sql) or die ('查询出错了..'); //执行sql语句, while($row = mysql_fetch_array($rs)){ echo "<br />"; echo '登陆成功'; echo '用户名:'.$row['username'] . " 密码: " . $row['userpwd']; } mysql_close($conn); ?>
其中conn.php, 是负责数据库连接的页面, 这相当于jsp的页面重用技术,减少代码了的同时,又方便维护。
conn.php
<?php //用来处理连接到数据库的php #获得数据库连接 $conn = mysql_connect('localhost','root','netjava'); if(!$conn){ die('数据库连接失败!'); #退出. } #选择要使用的数据库 $t = mysql_select_db('myblog',$conn); if(!$t){ die('没有这个数据库!'); } ?>
到现在已经很清楚了。。
这样理解不知道妥不妥 php = jsp + servlet;
暂时这样理解吧。