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()方法,那么我转发的页面就会出现乱码,希望大神们可以解答下我的问题。
相关文章推荐
- ajax前置处理实现异步请求session过期时跳转登录页面
- Struts 通过拦截器实现登录后跳转到登录前页面 处理普通Http请求和Ajax请求时拦截配置
- Servlet连接JDBC实现页面跳转
- 在servlet中实现页面跳转的两种方法
- 重写ajax方法实现异步请求session过期时跳转登录页面
- 在servlet中实现页面跳转
- Json实现异步请求提交评论无需跳转其他页面
- Servlet页面跳转实现方法的区别
- servlet中实现页面跳转实现方法
- ajax post请求之后 实现页面跳转和带参数跳转问题
- Servlet课程0425(六) 不经过验证直接跳转---session实现不同页面之间共享数据
- Json实现异步请求提交评论无需跳转其他页面
- Servlet页面跳转实现方法的区别
- 使用无刷新技术,去请求该失效Session的页面,实现跳转到重新登陆页面。
- 使用servlet,jdbc将mysql中数据显示在jsp页面中,且实现直接删除数据库数据
- Servlet,JDBC,JSONObject三者配和处理客户端请求并返回正确的json数据
- js页面(页面上无服务端控件,且页面不刷新)实现请求一般处理程序下载文件方法
- 原生无框架JDBC实现数据库连接和Servlet页面的基本操作
- 关于jsp和servlet中实现页面跳转的几种方式总结
- Servlet中请求数据的传递、请求转发与页面跳转