您的位置:首页 > 其它

Servlet实现JDBC---页面请求跳转到Servlet处理

2014-05-06 23:18 423 查看
package TextJdbc;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.sql.*;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.catalina.connector.Request;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;
import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List;

/**
* Servlet implementation class JDBCServlet
*/
@WebServlet("/JDBCServlet")
public class JDBCServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public JDBCServlet() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String user = request.getParameter("username");
String pwd =  request.getParameter("pwd");
//PrintWriter out = response.getWriter();

try{
Class.forName("org.gjt.mm.mysql.Driver");
String url="jdbc:mysql://localhost:3306/production managerment system";
String username=user;
String password=pwd;

Connection cnn=(Connection) DriverManager.getConnection(url, username, password);

Statement stmt=(Statement) cnn.createStatement();
String sql="select * from book";
ResultSet rs = stmt.executeQuery(sql);
//java.sql.PreparedStatement ps = cnn.prepareStatement(sql);
ArrayList<BookBean> list = new ArrayList<BookBean>();
while(rs.next()){
BookBean book = new BookBean();
book.setProductionname(rs.getString("productionname"));
book.setProducername(rs.getString("producername"));
book.setId(rs.getString("id"));
book.setNum(rs.getString("num"));
book.setIndate(rs.getString("indate"));
book.setOutdate(rs.getString("outdate"));
list.add(book);
}
request.setAttribute("list",list);
rs.close();
stmt.close();
//ps.close();
cnn.close();
}
catch(Exception e){
//out.println("用户名或密码错误,请重新输入!");
RequestDispatcher requestDispatcher = request.getRequestDispatcher("login.jsp");
requestDispatcher.forward(request, response);
//out.println("error!");
return ;
//e.printStackTrace();
}
request.getRequestDispatcher("success.jsp").forward(request, response);
}

}


今天又完成了一份JSP的作业:Servlet实现JDBC---页面请求跳转到Servlet处理。遇到了一些问题,感觉很有必要跟大家一起分享一下。

1、注意在Servlet的web.xml里配置:

在Servlet的web.xml里配置的时候要注意<url-pattern></url-pattern>的命名,首先是要加/其次是不要跟你的Servlet同名,具体原理也不太懂,反正如果同名的话老是会出404或者连接请求失败的界面,当你运行.jsp文件应用到Servlet的时候。

在login.jsp的标签如下:<form name="form1" method="post" action="JDBC">

而在web.xml的<url-pattern>配置如下:<url-pattern>/JDBC</url-pattern>

2、在Servlet实现JDBC的操作:

首先就是url的问题:我用的是MySQL,格式就是你本机的MySql的端口号+你要连入的数据库名称。

String url="jdbc:mysql://localhost:3306/production managerment system";

然后用到DriverManager.getConnection()方法返回一个Connection对象,然后再调用createStatement方法创建Statement对象,最后在ResultSet实现sql查询语句。

Connection cnn=(Connection) DriverManager.getConnection(url, username, password);

Statement stmt=(Statement) cnn.createStatement();

String sql="select * from book";

ResultSet rs = stmt.executeQuery(sql);

3、对异常进行处理:

连接数据库,万一没有连接成功,抛出了异常,就要在catch块里处理了,这里如果要加入页面的跳转就要记得在最后面加入return。

catch(Exception e){
//out.println("用户名或密码错误,请重新输入!");
RequestDispatcher requestDispatcher = request.getRequestDispatcher("login.jsp");
requestDispatcher.forward(request, response);
//out.println("error!");
return ;
//e.printStackTrace();
}


最后附上我的代码文件,希望能够帮到有需要的朋友。

最后还有一个小BUG,就是当我想对连接失败的异常处理时如果在catch块里用out.print()方法,那么我转发的页面就会出现乱码,希望大神们可以解答下我的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: