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

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()方法,那么我转发的页面就会出现乱码,希望大神们可以解答下我的问题。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值