问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java数据转发的问题?

发布网友 发布时间: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()));
ByteArrayOutputStream bo=(ByteArrayOutputStream) socket.getOutputStream();
bo.write(br.readLine().getBytes());
bo.flush();
br.close();
bo.close();

热心网友 时间:2022-05-02 13:03

DatainputStream in=Sockect.getInputStream();while(in.buffered!=null){
String str=in.readLine();response.write() //些个多个人}凭记忆大概写的 ,网上在再看看你的具体思路是什么

热心网友 时间:2022-05-02 14:38

socket
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...Exception EoleSysError in module PlayGame.exe at 000AAA95,怎么... ...出现Exception EOleSysError in module ATT.exe at 000BCA21.拒绝... 求大神帮忙: Exception EOleSysError in module.1.多元函数概念(1... windows7ExceptionEOlesysErrorinmoduleexeat000649E0找不到指定模块... 南京新街口适合情侣吃饭的地方,南京钟山景区露台酒店价格 c语言中如何计算a+ b的和 题目:有用户输入两个整数a,b 求a和b之间的数的累加和,包括a和b 用C语... 有请高手解答,平手盘是什么意思,我认为打平多 平手盘什么意思平手盘指的是什么 食品添加剂安全使用指南目录 东风本田新杰德仪表屏幕cey总闪是什么原因? 【云浮行情】inspire现时行情如何?有何优惠? 全系车型现金优惠1万元 本田INSPIRE东莞地区现车充足 青岛地区东风本田杰德现金优惠高达1万元 新凌派的豪华后视摄像显示系统有哪几种模式? 东风本田LIFE详细配置信息,整体来说还不错 东风本田inspireRWC豪华广角后视镜显示系统启到一个什么作用。 什么是ETA是什么意思 请问ETA(预计达到时间)是什么的简写 ETA是什么意思 Eta是什么意思翻译? 头发怎么变白了 洗衣机里有卫生纸放不出水怎么办 不晒太阳皮肤会变白吗 为什么人长时间不晒太阳会变白? 不晒太阳会变白吗? 头发被太阳晒会不会变白? 白头发和晒太阳有关系吗 发现了一根白头发,是不是不晒太阳的缘故? 不晒太阳就会变白了吗? 微信红包钱发出了怎么可以终止它 微信支付功能已终止支付、怎么才能将零钱包的钱取出? 只用手指抓了一下,天文镜的镜片就脏了!怎么擦? EXCEl表格刚才不小心,什么键按了,突然整个工作表全部都变小了,怎么恢复啊,急!!!!! 日照市的个人信誉情况的证明到哪个部门办理? 日照市哪里可以查个人征信度?具体位置麻烦说下,谢谢。 日照市银行证信在哪里开 java如何将数据库中的数据从一个数据库发送到另外一个数据库 水壶的水垢怎么除净 水锈净是酸性还是碱性 水垢净有人用过吗,效果如何? ★★★烧水壶里面有水垢 用什么可以洗掉?? 铁锅被水垢净泡了以后掉色还可以使用吗? 水垢净和洗衣机槽专用清洁剂两个能混在一起使用吗? 人喝了稀释后的水垢净怎么处理? 怎么样最有效的去除暖水瓶的水垢??? 水垢怎样去掉 水垢净在不锈钢上留下的印怎么处理 怎样才能去除水壶里的水垢…? 解梦 昨晚做了一个梦,梦见一个寒冷的下雪天