这个方案有很多,其实在jsp中写java程序,编译器仍然会把java封装成java类然后去调用
这和我们自己写java类,然后去调用时一个意思。
所以其实,我们可以写servlet去调用数据库,然后用jsp去带带调用这个类也是可以的。
不过jsp直接调用更容易,同时在MVC的结构里面,servlet主要用来控制,所以应该是servlet调用jsp比较常见。
jsp调用代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'showtext.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%@ page import="java.sql.DriverManager"%>
<%@ page import="java.sql.Connection"%>
<%@ page import="java.sql.Statement"%>
<%@ page import="java.sql.ResultSet"%>
<%@ page import="java.sql.SQLException"%>
<% response.setHeader("Refresh", "2"); %>
<% String currTime = new java.util.Date().toString();
out.println(currTime); %>
<br>
<br>
<%
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url="jdbc:mysql://localhost:3306/test";
String user = "root";
String pass = "23";
Connection con=DriverManager.getConnection(url, user, pass);
Statement stmt=con.createStatement();
String sql="select * from test.con";
//out.println(sql);
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
//out.print("<h1>");
//out.print(rs.getInt(1));
int temp = rs.getInt(2);
//out.print(temp);
if(temp==0)
{
out.print("<img ");
out.print("src='test3.gif'");
}
else{
out.print("<img ");
out.print("src='test2.jpg'");
}
//out.print("</h1>");
}
rs.close();
stmt.close();
con.close();
%>
<br>
<br>
</body>
</html>
同样的调用数据库,虽说都是java代码,但是如果直接用java编写,就不一样了。
java调用数据库代码如下:
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Test {
public static void main(String[] args){
try{
//add mysql
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mysql?user=root&password=23";
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from test.con");
while(rs.next()){
System.out.println(rs.getInt(1));
System.out.println(rs.getInt(2));
//System.out.println(rs.getBoolean(3));
}
rs.close();
stmt.close();
conn.close();
}
catch(ClassNotFoundException e){
System.out.println("Error");
}
catch(SQLException e)
{
e.printStackTrace();
}
}
}
大家可以看看这个java的代码跟jsp的有什么区别。
刚开始jsp一直不成功,所以看了看网上大家的解决方法,主要有3种。
需要把:mysql-connector-java-5.1.22-bin 添加到tomcat的lib文件夹下,然后重启tomcat。
还有就是需要把mysql-connector-java-5.1.22-bin添加到classpath中。
最后就是要把这个jar文件添加到java的lib/ext中。作为一个扩展。
不过最近我发现,主要是jsp的实用方法跟servlet不一样,所以导致我一直运行不成功。
还有就是很多朋友说jsp没办法显示图片。
主要是tomcat的路径问题。
我直接把图片放在tomcat的webapps对应工程的文件夹下面,显示没有问题。
不知道是不是比较山寨。不过总之是显示了。 希望对大家有帮助。