数据库Oracle+java web设计中的小问题

  
  
  
  
  • 1. 图片路径问题,为什么图片不会显示?
  • 解:在我们想显示图片,并设置路径的时候,我们一定要注意到,每一个自动产生的jsp文件中会有这么一条代码:<base href="<%=basePath%>">,这是什么意思呢?base 标签的 href 属性规定页面中所有相对链接的基准 URL,具体的可以自己网上搜索,每个jsp文件对应的href都不同,在jsp文件中,我们可以使用<!-- --->将这句屏蔽,这时我们便可以用我们熟悉的方式编写路径,假设在mytest文件下有一个htmlpic文件夹,在pic文件夹下有图片1.jpg,在html文件夹下有test.jsp文件,如果我们想在里面显示1.jpg便可如下编写:<img src=” ../pic/1.jpg”/> 或是<imgsrc=”<%=basePath%>/pic/1.jpg”>, 不过值得注意的是如果你的jsp文件中有提交表单操作最好不要屏蔽这条语句,不然会有错误提示对应的servlet文件找不到。
  • 2.如果Oracle数据库中的某个表中的某个属性是char型,我如何在Java实现写入到数据库中呢?
  • 解:第一种,我们可以改数据库,把数据类型改为varchar2(); 第二种:如果我非要数据库里的数据类型是char型,比如性别就设置为char(1)型,我们知道Java中与数据库操作相关的PreparedStatement 类是无法直接设置char类型的,这是我们便可以这样操作,用前面性别的例子,定义PreparedStatement对象psmt 则使用:psmt.setString(2, String.valueOf(manager.getSex())),利用String类的静态方法便可将字符型数据转换成字符串数据类型。
  • 3. 如果想从Oracle数据库中获取一张表的属性,而这张表中的属性是char型,该如何实现呢?
  • 解:与上面的类似,性别属性,我们在dao包中操作,获取属性,但我们知道PreparedStatement 类不支持char类型数据操作,这时我们便可以如下操作:manager.setSex(rs.getString("m_sex").toCharArray()[0]); 其中manager对象对应数据库中的一张表,通过PreparedStatement获得的都是String类型,这时我们将其转换成字符数组,再取字符数组中的第一个就行了
  • 4. 如果想要实现模糊查询,使用Oracle中的like关键字,该如何实现呢?
  • 解:对于关键字查询,我们不能在java中直接使用“select * from HOHonor whereh_name like %?%”,因为这样就会把其中的“?”当做普通字符,无法实现,我们可以在此句之前先将“%”加上,如:key='%'+key+'%';
  • StringsSql = "select * from HOHonor where h_name like ?";
  • 这样便可行了,另外可以考虑一下使用转义字符,我没有试过。
  • 5. 我如何在jsp页面将一个文本输入框设置使使用者无法编辑?
  • 解:使文本框不可编辑,有三种方法方法1: onfocus=this.blur()
  • <input type="text" name="input1" value="中国" onfocus=this.blur()>
  • 方法2:readonly
  • <input type="text" name="input1" value="中国" readonly>
  • <inputtype="text"name="input1" value="中国"readonly="true">
  • 方法3: disabled
  • <input type="text" name="input1" value="中国" disabled>
  • 本人使用第二种方法,已通过,但使用第三种方法时,文本框中的数据无法通过form表单传至servlet,这种效果可用于实现系统的自动编号。
  • 6.Oracle中Date数据类型与Java中数据类型的匹配问题?
  • 解:我们Oracle数据库类型中会有Date类型的,那么我们如何从前台插入一个日期数据到数据库中呢?Java中
  • 也有对应得Date数据类型,我们可以使用这个类型来实现,不过Java本身不推荐使用,现在来介绍如何使用,我们知道
  • 我们通过HttpServletRequest request在sevlet文件中获得jsp页面中的输入框中的数据为String类型,我们需要将其转换成int类型,
  • 如下:Integer.parseInt(request.getParameter("byear")),使用Integer类的parseInt类将String类型转换成十进制整型。
  • 之后再通过Date类构造一个日期型数据,如下:newDate(Integer.parseInt(request.getParameter("byear")),Integer.parseInt(request.getParameter("bmonth")),Integer.parseInt(request.getParameter("bday")))
  • 此步之后,我们便得到了Date类型的数据,我们输出却发现结果有些问题,比如我们在jsp页面输入1982-01-01,但通过Date构造之后输出得到的结果却是:3882-02-01,这是为什么?
  • 通过查看JDK帮组文档,我们发现Date
  • @Deprecated
  • public Date(int year,
  • int month,
  • int date)
  • 参数:
  • year - 减 1900 的年份。
  • month - 0-11 的月份。
  • date - 一月中 1-31 之间的某一天。
  • 也就是说我们设置的year参数应该用实际的减去1900,另外,它的月份是从0开始,此时我们将原来的语句改为:
  • newDate(Integer.parseInt(request.getParameter("byear"))-1900,Integer.parseInt(request.getParameter("bmonth"))-1,Integer.parseInt(request.getParameter("bday")))
  • 这时便得到正确结果了。



你可能感兴趣的:(java,oracle,数据库,Web,jsp)