发布网友 发布时间:2022-05-02 10:16
共4个回答
懂视网 时间:2022-05-02 14:37
先看DAO,在DAO里面没有对name加上单引号,导致数据库查询出错,由于java会自动拼接为字符串
public AdminDTO selectAdminById(String name){ Connection conn = DbHelper.getConnection(); String sql = "select * from admin where username= "+name; AdminDTO admin = null; try { PreparedStatement pst = conn.prepareStatement(sql); ResultSet rst = pst.executeQuery(); while (rst.next()) { admin = new AdminDTO(); admin.setId(rst.getInt("id")); admin.setUsername(rst.getString("username")); admin.setUserpwd(rst.getString("userpwd")); } rst.close(); pst.close(); } catch (SQLException e) { e.printStackTrace(); }
而在数据库里需要有单引号,本来应该是这样的查询结果
导致了
抛出sql错误,解决方法就是
String sql="select * from admin where username =‘"+name+"‘";
使用该语句来添加单引号解决,但是这还不完美,我们应该定义一个更加完美的方法来执行数据库的查询,
public static ResultSet executeQuery(String sql, Object... params) throws SQLException { Connection conn = ds.getConnection(); try { return executeQuery(conn, sql, params); } catch (SQLException ex) { closeQuietly(conn); throw ex; } }
使用该方法来执行查询
参数params为一个可变长度的参数,可以传入参数作为数据库的查询所需的字段
JDBCUtils.executeQuery("select * from T_cities where Id=? and IsDeleted=0", id);
另外一个就是重定向的问题了
我们要将校验的servlet的请求重定向到servlet
response.sendRedirect("/ShowServlet");
当然有时候光重定向到主服务器还远远不够,我们需要把响应和请求 都转发到主服务器
request.getRequestDispatcher("/ShowServlet").forward(request, response);
还有另外一个方式,但是不推荐使用
response.sendRedirect(request.getContextPath()+"/servlet/ServletB");
为了编写最有效的代码,你应该了解这两种重定向技巧的不同。forward方法是在Web container内部工作的。sendRedirect方法需要到客户端的一个往返。所以forward方法比sendRedirect要快。但是,运用forward方法有局限性,你只能重定向到同一个Web应用程序中的一个资源。而sendRedirect方法可以让你重定向到任何URL。结论:如果可以解决你的问题,那么就用forward方法。只有当你不能用forward方法时才运用sendRedirect方法。
forward不会改变当前浏览器地址栏中的路径
Java内部转发和数据库的问题
标签:sel min resultset nec except 编写 select null 路径
热心网友 时间:2022-05-02 11:45
楼上的不对DataInputStream 是接受基本数据类型的.response.write() 啥意思?httpServletResponse? 这个接口也没有write方法啊? 我提供的参考:如果在servlet中直接使用数据的getbyte()就可以了转换成字节数组了,然后传这个数组就可以了.重写doGet或doPost方法.使用println(xxx.getbyte()) 下面是j2se中的 Socket socket=new Socket(); BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));热心网友 时间:2022-05-02 13:03
DatainputStream in=Sockect.getInputStream();while(in.buffered!=null){热心网友 时间:2022-05-02 14:38
socket