学习搜索引擎,,发觉jsp调用java大致有3种方法。
第一种,使用javabean。例如
<jsp:useBean id="mm" class="com.ReadComm" scope="page"> </jsp:useBean>
class中填写class路径。
第二种,直接import引用java类
比如: <%@ page import="java.util.*"%>
把你的类放到WEB-INF\classes下,引得时候注意加上包名就行
例如:
类:WEB-INF\classed\com\Test.class
引用:: <%@ page import="com.Test">
在jsp里面调用类的方法只要把代码包在 <%%>就行
第三种,使用applet,自己不常用,不多说
......
产生验证码图片的文件-----image.jsp
<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
Color getRandColor(int fc,int bc){//给定范围获得随机颜色
Random random = new Random();
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int g=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
return new Color(r,g,b);
}
%>
<%
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
// 在内存中创建图象
int width=60, height=20;
BufferedImage image = new Buffe ......
解决办法:
第一:
1:在jsp页面加入:
<%@ page contentType="text/html; charset=gb2312" %>
2:在servlet里面:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=gb2312");//这是重要的
3:上面的如果在不行就用如下的方法在数据入库前进行调用:
public static String UnicodeToChinese(String s){
try{
if(s==null ¦ ¦s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("ISO8859_1"),"gb2312");
re ......
因为初学,所以,在建立Statement时使用默认参数。导致在使用执行rs.last()时,产生“java.sql.SQLException:对只转发结果集的无效操作:last”的异常。
最后在建立Statement时加入相关参数,就可以解决了。
操作查询结果集的过程中出现异常
出现异常的语句: rs.last();
异常的详细信息:对只转发结果集的无效操作: last
解决办法: stat = conn.createStatement();
改为 stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 就可以了
分析: 异常出现于移动结果集的指针时,原因是在生成statement对象的时候提供的参数不同
无参数的那个方法使用的是默认参数,statement执行后得到的结果集类型为 ResultSet.TYPE_FORWARD_ONLY.这种类型的结果集只能通过rs.next();方法逐条读取,使用其他方法就会报异常. 如果想执行一些复杂的移动结果集指针的操作就要使用其他参数了
顺便简单介绍一下各个参数:
ResultSet.TYPE_FORWARD_ONLY (略)
ResultSet.TYPE_SCROLL_INSENSITIVE 双向滚动,但不及时更新, ......
package servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloBeijing extends HttpServlet{
//public void init(ServletConfig config) throws ServletException{
// super.init(config);
//}
public void service(HttpServletRequest request,HttpServletResponse response) throws IOException{
response.setContentType("text/html;charset=gb2312");
PrintWriter out=response.getWriter();
out.println("<html>");
out.println("<head><title>servlet_hello测试</title></head>");
out.println("<body>");
out.println("<h2>汉字</h2>");
out.println("</body></html>");
}
}
别的估计都不用看了 重点就
是红色的两句话
另外 这里有个重点
这两句话的顺序是不能倒的 一定要这样.
......
在conf/web.xml中名为jsp的servlet中可以加入一些init参数
· checkInterval - 如果“development”属性为false且“checkInterval”大于0,则使用后台编译。“checkInterval”是查看JSP页面(包括其附属文件)是否需要重新编译的两次检查时间间隔(单位:秒)。缺省值为0秒。
· classdebuginfo - 类文件在编译时是否显示调试(debugging)信息? true 或false,缺省为true。
· classpath - 编译servlet时要使用的类路径,当ServletContext 属性org.apache.jasper.Constants.SERVLET_CLASSPATH未设置的情况下,该参数才有效。在Tomcat中使用到Jasper时,该属性总被设置。缺省情况下,该路径基于你当前的web应用动态生成。
· compiler – Ant将要使用的JSP页面编译器,请查阅Ant文档获取更多信息。如果该参数未设置,那么默认的Eclipse JDT Java编译器将被用来代替Ant。没有缺省值。
· compilerSourceVM - 编译源文件时采用哪一个JDK版本?(缺省为 JDK 1.4)
· compilerTargetVM - 运行类文件时采用哪一个JDK版本?(缺省为 JDK 1.4)
· development - 是否让Jasper用于开发模式? ......