jsp中显示验证码的代码怎么写?

jsp中显示验证码的代码怎么写?,第1张

import javaawtColor;

import javaawtFont;

import javaawtGraphics;

import javaawtimageBufferedImage;

import javaioIOException;

import javaioOutputStream;

import javautilRandom;

import javaximageioImageIO;

/生成验证码

/

public class MakeCertPic {

 //验证码中可以出现的字符集,可以根据需要修改

 private char mapTable[]={

   'a','b','c','d','e','f',

   'g','h','i','j','k','l',

   'm','n','o','p','q','r',

   's','t','u','v','w','x',

   'y','z','0','1','2','3',

   '4','5','6','7','8','9'

 };

/ 功能:生成彩色验证码

 参数wedth为生成的宽度,参数height为生成的高度,参数os为页面的输出流

/

 public String getCertPic(int width,int height,OutputStream os){

  if(width<=0)

   width=60;

  if(height<=0)

   height=20;

  BufferedImage image= new BufferedImage(width,height,BufferedImageTYPE_INT_RGB);

  //获取图形上下文

  Graphics g = imagegetGraphics();

  //设定背景颜色

  gsetColor(new Color(0xDCDCDC));

  gfillRect(0,0,width,height);

  //画边框

  gsetColor(Colorblack);

  gdrawRect(0,0,width-1,height-1);

  //随机产生的验证码

  String strEnsure = "";

  //4代表4为验证码,如果要产生更多位的验证码,则加大数值

  for(int i = 0;i<4;++i){

   strEnsure += mapTable[(int) (mapTablelengthMathrandom())];

  }

  //将认证码显示到图像中,如果要生成更多位的验证码,增加drawString语句

  gsetColor(Colorblack);

  gsetFont(new Font("Atlantic Inline",FontPLAIN,18));

  String str = strEnsuresubstring(0,1);

  gdrawString(str,8,17);

  str = strEnsuresubstring(1,2);

  gdrawString(str, 20, 15);

  str = strEnsuresubstring(2,3);

  gdrawString(str, 35, 18);

  str = strEnsuresubstring(3,4);

  gdrawString(str, 45, 15);

  //随机产生15个干扰点

  Random rand = new Random();

  for(int i=0; i<10; i++){

   int x = randnextInt(width);

   int y = randnextInt(height);

   gdrawOval(x,y,1,1);

  }

  //释放图形上下文

  gdispose();

  try{

   //输出图形到页面

   ImageIOwrite(image, "JPEG", os);

   

  }catch (IOException e){

   return "";

  }

  return strEnsure;

 }

}

makeCertPicjsp页面用于调用生成验证码的JavaBean,并在客户端显示,源代码如下:

<%@page contentType="image/jpeg" %><%@page language="java" pageEncoding="utf-8"%><jsp:useBean id="image" scope="page" class="securityCodepicMakeCertPic"/><%

 String str = imagegetCertPic(0,0,responsegetOutputStream());

 //将验证码存入session中

 sessionsetAttribute("certCode",str);

%>

下边是登录页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" "http://wwww3org/TR/html4/loosedtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>验证码测试登录页面</title>

  <script type="text/javascript">

function changeimg()

{

var myimg = documentgetElementById("code"); 

now = new Date(); 

myimgsrc="makeCertPicjspcode="+nowgetTime();

</script>

</head>

<body>

<center>

 <form action="loginCheckjsp" method="post" />

 用户名:<input type="text" name="username" /><br>

 密&nbsp;&nbsp;码:<input type="password" name="password"/><br>

 &nbsp;验证码:<input type="text" name="certCode"/>

 <img id="code" src="makeCertPicjsp"><a href="javascript:changeimg()">看不清,换一张 </a><br>

 <input type="submit" value="登录"/>

 </form>

</center>

</body>

</html>

 JSTL是一个已经被标准化的标记库集合 她支持迭代 条件 XML文档的解析 国际化 和利用SQL与数据库交互的功能 JSTL主要包括四个基本部分的标记库 Core XML 国际化 和对SQL的支持 由于这篇文章的主要是以其中的SQL部分的应用来快速了解JSTL 所以我们这篇文章只介绍了 Core和SQl标签库的一些基本功能

 这项技术简单而且功能强大 足以和PHP ColdFusion一较高下 他在拓展Java的应用领域方面有足够的能力 这些领域不只包括大型的可再升级的Web应用程序 对于仅拥有简单主页的Web程序一样没问题 这允许你在建立站点的时候可以避免那些经常考虑的XML的集成和与数据库的连接 JSTL的关键点就是简单易用 还有 那就是JSTL是基于JSP构建的 他允许我们使用所有的Java技术

 开始之前 我们需要弄清楚怎样才能运行JSTL 由于是基于JSP技术的 所以我们运行它就需要一个能够编译JSP的容器 这里我们使用免费的JSP容器 TOMCAT() 至于如何安装这个产品已经超出了本文所讲述的范围 毫无疑问 这个软件产品现在已经很普及了 而且关于如何安装的文档资料也是很多 这里假设您已经安装并成功配置了这个容器 你只需再安装JSTL运行所需文件它可以从这里下载你不需要真正的安装它 只需要将其中的 JAR文件包含到你的应用程序的WEB INF/lib目录下即可

 因为我们要在一个支持标准SQL的数据库上运行程序 你需要在你的电脑上安装有一个数据库 数据库的类型有许多种 这里我选择了MySql 我之所以选择他的原因在于首先 我们需要展示JSTL对于构造简单快速的应用程序领域所起的作用 同时能和一直在这个领域处于主导地位的PHP+MySql有所比较;第二点那就是MySql是可以免费下载并包含有一个针对JAVA的JDBC驱动 总之 为了使用下面的例子 你需要下载一个MYSQL服务器( MySql Connector/J JDBC驱动程序 还有就是MySql control center ) 这个产品可以让你非常容易的操作管理Mysql数据库文件 全部下载完成后 你需要安装mysql和mysql Control Center 另外还有就是mysql的JDBC驱动需要放到你的web应用程序中的/Web INF/lib目录中

 在创建程序代码之前 你需要创建并填写数据库表 关于这方面的主题文章也相当广泛 具体如何操作超出了本文的范围 这里我推荐给你我们上面提及的一个可视化的管理工具 MySQL Control Center 你可以用他来创建一个用来运行程序的测试用户 数据库以及创建一个测试表 并填写若干记录 关于登陆名及密码数据库名称这些配置环境参数 你应该记住他们 稍后需要应用到我们的代码中

 现在 你就可以准备创建自己的第一个JSTL应用程序了它需要我们做下面一些事情

 整个实例程序代码包括两个文件Hello jsp和 Continue jsp

 Hello jsp文件允许你输入数据库名称 登陆名称 登陆密码 数据库表名 Continue jsp 接受Hello jsp中的数据信息并且连接数据库 并对数据库中的表执行一个Select请求

 下面是这个系统所有的代码文件 我将逐一进行解释 这些代码相当简单 对于代码的结构 我相信你即使没有我的解释你也能理解的

  : <! Hello jsp >

  : <>

  : <head>

  : <title>Hello</title>

  : </head>

  : <body bgcolor="#ffffff">

  : <h >Please enter all necessary information and click OK </h >

  : <form method="post" action="Continue jsp">

  : <br>Your login to database:

 <input type=text name=login size=" ">

  : <br>Your password to database:

 <input type=password name=password size=" ">

  : <br>Your database name:

 <input type=text name=database size=" ">

  : <br>Your database table:

 <input type=text name=table size=" ">

  : <br><br><input type=submit name=submit value=" OK ">

  : </form>

  : </body>

  : </>

 (请注意文本左侧的数字只是为你提供一些标记信息 你不需要将他们输入到你的代码文件中 )

 上面就是所有Hello jsp的源代码 很惊奇吧 他仅仅是纯粹的HTML代码 就这么简单 我想应该没有注释的必要了 我之所以将这些代码片段包含进文章中就是为了展示一下JSTL集成到那些需要快速扩充额外功能的HTML站点中是多么的简单 让我再为你展示一下Continue jsp的全部代码 看过之后 你就会对 JSTL有些了解了

  : <! Continue jsp >

  : <%@ taglib prefix="c" uri="%>

  : <@ taglib prefix="sql" uri="%>

  : <c:set var="h" value="localhost"/>

  : <c:set var="l" value="${param login}"/>

  : <c:set var="p" value="${param password}"/>

  : <c:set var="d" value="${param database}"/>

  : <c:set var="t" value="${param table}"/>

  : <>

  : <head>

  : <title>Continue</title>

  : </head>

  : <body bgcolor="#ffffff">

  : <sql:setDataSource driver=" mysql jdbc Driver"

 url="jdbc:mysql://${l}/${d}user=${u}&password=${p}"/>

  : <sql:query var="result">

  : SELECT FROM <c:out value="${t}"/>

  : </sql:query>

  : <c:forEach var="row" items="${result rowsByIndex}">

  : <c:out value="${row[ ]}"/><br>

  : </c:forEach>

  : </body>

  : </>

 (请注意文本左侧的数字只是为你提供一些标记信息 你不需要将他们输入到你的代码文件中 )

 这就是我们所有的代码了 是不是非常不错?现在我门来解释一下上面这些代码的作用

 行 是 HTML 的注释说明

 行 这些 JSP 标签是为了引用外部的 标签库 更确切的说这里是引用了JSTL库中的 Core 和SQL标签库部分 我们为他们都设置了前缀名称 以便于我们通过这些前缀名称访问被引入的标签库中的功能方法

 行 正如 Hello jsp 真正运行的样子 他将请求continue jsp Continue jsp获得请求后就需要得到并解析来自Hello jsp的若干变量 我们使用了这样的方式${param YOUR_VAR} 在第 行<c:set标签 将变量${h}设置为 "localhost" 第五行变量${l}将获取我们在 Hello jsp中的login文本域中输入的信息 第 行的变量将分别获得来自Hello jsp中用户所输入的密码 数据库名称 数据表名称

 行 是一些我经常用来常见HTML网页头的简单的HTML标签 马上 重要的功能马上要到了

 行 我们试图用我们先前获得的mysql驱动程序( mysql jdbc Driver)建立数据库连接 在URL中 我们指明数据库连接所需要的参数 象数据库名称 主机名称 登陆名及登陆密码 依此 我们可以用其它任何的JDBC驱动程序连接其相对的数据库 如果我们需要连接其他的SQL数据库 只需更改这个 URL就够了

 行 这里我们执行了一个Select 查询 请特别注意第 行 我们使用了另一个JSTL功能函数<c:out 用来输出我们所获取的数据表名称 这里我们同样可以使用其他的SQL命令 比如说 INSERT DELETE 等等 要执行这些没有返回值的查询请求 你就需要使用<sql:update JSTL功能函数了 他可以直接执行他们就象<SQL:query一样 只是执行它是不需要特别指定结果变量来存储语句执行返回的结果

 行 既然我们执行了上面的SELECT查询语句 我们就应该把他的返回结果显示出来 <c:forEach 就是JSTL 中一个具有迭代功能的函数 执行它时 我们通过${result rowsByIndex}将返回的每一个数据行信息返回给变量${row} 紧接着在第 行 我们通过<c:out value="${row[ ]}"/>显示返回的每个数据行的第一个数据列中的值 只要你的数据表中包含的字段 你都可以通过改变变量 ${row}中的数字大小来对请求表中的任意一个字段中的值对他们进行访问

 行 是HTML 页脚

 在你亲自创建JSTL应用程序过程中 可能你还没有发现它有多么的强大 但你应该能够意识到JSTL的功能函数的简单和高效性 试想有了JSTL 整合出一个基于SQL的新闻专栏是何等的快速 集成你现有的web站点是何等的容易

 很好 我们的代码很容易理解的 即使一个非专业程序员的话 打个比方就算是一个设计师也能够读懂它 理解它 还可能进行部分的修改 起码是页面布局上的修改

 正如我们开始的时候所提到的 为了使我们的JSTL代码正常的运行 我们需要安装Mysql Connector/J 中的JAR 文件 当然还有 JSTL 因为我们使用了Tomcat这个JSp 容器 你需要在Tomcat的文件目录Webapps下创建你自己的文件夹 将你的Hello jsp Continue jsp文件放在你创建的文件目录中 在你创建的目录中你还要创建一个叫做WEB INF 的文件夹 将你的配置文件Web xml放在里面 web xml文件如下

 <xml version=" " encoding="UTF ">

 <!DOCTYPE web app

 PUBLIC " //Sun Microsystems Inc //DTD Web Application //EN"

 ">

 <web app />

 接下来我们还需要在WEB INF下创建一个叫做lib的子目 并将下列文件放进去

 jstl jar

 saxpath jar

 standard jar

lishixinzhi/Article/program/Java/JSP/201311/20216

1这种情况,应该是jsp的内容被当做文本直接显示到了页面上,一般在使用springMVC时可能出现这样的问题,猜测可能使用了springMVC。

2具体解决方案:

查找webxml文件,并找到springMVC的相关配置

<servlet-mapping>

<servlet-name>springMVC</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

将上面的内容改为下面的即可 拦截是/ 而不是/

<servlet-mapping>

<servlet-name>springMVC</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

原因:在这种情况向springMVC会把jsp,sql,txt都当做txt处理。结果就是直接在浏览器加载了jsp源码。

JSP文件运行是在诸如tomcat服务器上的,应该用浏览器直接打开的吧

可以将jsp文件的后缀改为html,注释一下相关的jsp代码

或者jsp页面有错误,要改

说说我的看法。

首先,我也遇到了和你类似的情况。其次,我检查后发现jsp的代码和html的代码都没有问题。但为什么会出现这样的问题呢?原因就在于我用eclipse来运行html文件是选用打开方式中的web浏览器,也就是下图被选中的部分:

事实上,如果选择这种方式来打开html文件(它里面有一个表单,单击提交按钮后,会将输入框里面的内容传给jsp文件,并在jsp文件中显示出来),那么点击提交按钮后就会得到jsp文件的代码。

但是如果你选择如下图被选中的打开方式:

那么用这种方式打开html文件并跳转到jsp文件后,显示的就不会是jsp的源代码了,而是实际上这段代码将要输出的内容。

qq表白代码只是一个链接,所以看不到。

代码就是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。 源代码是代码的分支,某种意义上来说,源代码相当于代码。现代程序语言中,源代码可以书籍或磁带形式出现,但最为常用格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码最终目的是将人类可读文本翻译成为计算机可执行的二进制指令,这种过程叫编译,它由通过编译器完成。

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/3183277.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-02-11
下一篇2024-02-11

发表评论

登录后才能评论

评论列表(0条)

    保存