您的位置:首页 > Web前端 > JavaScript

jsp制作简易留言版

2017-02-17 22:14 183 查看
1:

学习目标

理解application

知识点:

1:vector类

这个就是实现数组的类

要使用这个类要在jsp页面加入这个

<%@ page import="java.util.*"%>

常用方法如下:

Boolean add(Object e)

这个方法是将指定元素添加到末尾,有顺序的,e就是要添加的

==========

Object elementAt(int index)

index表示一个索引,取值范围在0和vector.size()之间的任意整数

===

自我理解,第一个方法可以添加内容,而第二个方法就是可以获取我们想要的内容,类似于一个书架,我们想取哪本书

=============

代码实现

==

2:

application对象

常用方法

getAttribute(String name)

setAtrribute(String name,Object object)

这个两个方法类似与session的方法,session也有这两个方法

两者联系起来无非就是创建与设置,想要输入框与application有联系,就必须创建然后获取

比如

<input type="text" name="Mess">

这个时候转为application就需要上面2个方法

Vector v=(Vector)application.getAttribute("Mess");

而vector是类似于数组,两者结合如何使用呢

1:

首先创建一个vector对象,结合application获取input属性

Vector v=(Vector)application.getAttribute("Mess");

然后循环遍历

for(int i=0; i<v.size();i++)

然后用Object elementAt(int index)方法

{

String message=(String)v.elementAt(i);//取出内容字符串,给这个变量一个名字,比如他是盒子(数组)里的红球,我们就戴着手套(message)

把他取出来,而i就相当于这个方法的索引,也就是我们需要的内容(红球)

}

================

3:

StringTokenizer类

这个类字面理解就是分解字符串

方法

StringTokenizer(String s)

这个方法就是一个盒子,里面装有很多东西,比如空格符,换行符等等

2:

StringTokenizer(String s,String delim)

这个就只有一个分割符

使用如下

当我们取出红球之后,就要脱下手套,用篮子代替

StringTokenizer fenxi=new StringTokenizer(message,"#");//将字符串用#进行分割

接着如何输出分割后的内容,当我们拿出红球之后,必须要一个桌子(while循环)来展示

所以

while(fenxi.hasMoreTokens){

String str=fenxi.nextToken();//肯定不止一个小红球,所以我们就用建一个管子(str),下一个球就流进去

byte a[] str.getBytes("ISO-8859-1");//byte是一个字节,创建一个字节数组,然后得到我们内容的字节,转换格式

str=new String(a);//创建一个字符串对象

out.print("<br>"+str)

}

===========================

留言板想要获取日期

SimpleDateFomat类

常用方法

SimpleDateFormate(String pattern)

这个方法表示默认的日期格式

StringBuffer format(Date date,StringBuffer toAppendTo,FieldPosition pos)

这个方法就比较灵活

将给的的格式转换为日期/时间格式

然后将结果添加到给定的StringBuffer

具体使用

首先创建一个对象

Date messageDate=new Date();

SimpleDateFormat myformat=new SimpleDateFormat("yyy-MM-dd hh:mm:ss");

String messtime= myformat.format(messageDate);

自我理解,创建这个方法有了日期,就用让他相当于字符串显示出来,于是就调用format这个方法,首先要让系统识别是时间,所依把date放进去

=============

2:

难点突破

实现一个留言板

一个UI界面,一个逻辑页面,一个展示出来的界面

逻辑界面主要用数组(Vector),然后结合application连接起来,还要用elementAt(i)的方法将内容循环的内容变成索引

接着用StringTokenizer分割符的方法,获取内容

获取了内容然后转换为电脑可以识别的字符byte

获取了内容如何展示呢?

show.jsp

3:

具体实现

实现过程中程序报错

 1:Unchecked cast from Object to Vector<String>类型转换错误

2: Vector is a raw type. References to generic type Vector<E> should be---=应该用泛型

     parameterized

===

    Vector<String> v =(Vector<String>)application.getAttribute("message");//两者有了联系  //

这个代码报错

rows是vector<String>对象,里面只能存放String类型

所以

index代码

<center>简易留言板<br><hr>

      <form action="admin.jsp" method="post">

              <table border="1" bgcolor="pink">

                  <tr><td>标题</td><td><input type="text" name="title" ></td></tr>

                  <tr><td>发言人</td><td><input type="text" name="author" ></td></tr>

                  <tr><td>留言内容</td><td><textarea name="message" rows="5" cols="20"></textarea></td></tr>

                  <tr><td colspan="2"><center><input type="submit" name="submit" value="提交"></center></td></tr>

              </table>

      </form>

   </center>

======

逻辑代码

 <%

                String message=String.valueOf(request.getParameter("message"));//这个是输入文本框的值

                application.setAttribute("m",message);

                @SuppressWarnings("unchecked")

                Vector<String> v =(Vector<String>)application.getAttribute("m");//两者有了联系  //

               for(int i=0; i<v.size();i++){

               String messagefor=(String)v.elementAt(i);//还要用elementAt(i)的方法将内容循环的内容变成索引

               //接着用StringTokenizer分割符的方法,获取内容

               StringTokenizer fenxi=new StringTokenizer(messagefor,"#");

               //要获取内容还要用while循环

               while(fenxi.hasMoreElements()){

                   String str=fenxi.nextToken();//要获取下一个的值

                   byte a[] =str.getBytes("ISO-8859-1");

                   str=new String(a);

                   out.print("<br>"+str);

               }

           }

    %>

==============

【Vector<String> v =(Vector<String>)n;//两者有了联系  //】这行报错待解决

报错

ype safety: Unchecked cast from Object to Vector<Object>

对象类型不匹配

解决

在Vector<Object> v =(Vector<Object>)application.getAttribute("m");之前加上一句

@SuppressWarnings("unchecked")======这个表示忽略的意思
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: