本文目录一览:
- 1、在JSP中调用JAVA类和使用JavaBean有什么区别
- 2、编写一个猜数字的程序,当客户访问服务器上的Guess.jsp时,随机分配给客户一个1-100之间的数字,然后将这
- 3、JSP 中的JavaBean问题 大神请进 编写一个JavaBean,该JavaBean有一个属性n,属
- 4、用JSP编写一个猜数游戏程序
- 5、jsp与javaBean的关系??
- 6、在jsp中使用JavaBean连接数据库
在JSP中调用JAVA类和使用JavaBean有什么区别
可以像使用一般的类一样使用JavaBean,Bean只是一种特殊的类。特殊在可以通过jsp:useBean /调用JavaBean而其他类,可以和一般java中一样使用. Bean的参数中还可以指定范围, jsp:useBean scope="application" /该Bean在服务器的JVM中将只有一个实例. Bean是和WebServer相关的,不同的页面可以通过Bean 交互.而在一个页面中的类,就没有这个功能,除非通过session,那又是另外一回事了.
bean其时也是class文件,只是普通的java文件没有什么限制,如果按bean的规范来制作class文件,那他就是一个bean。而按bean的规范来制作就相当是一个组件,换句话说bean就是组件技术。
为了确保一个java类成为javabean,有以下四个简单的也是必须的规范:
这个类是可序列化的,即必须实现java.io.Serializable接口。
这个类必须带有一个无参数的构造方法。
若成员变量名为XXX,那么要有方法getXXX(),用来获取属性;setXXX(),用来修改属性;对于Boolean类型的成员变量,可用is代替get和set类中的方法的访问。属性都必须是public的。类中如果有构造方法,那么这个构造方法也是public的,并且无参数。
这个类包含所有必需的事件处理方法。
JavaBean和Servlet的不同 :
Type1: 一般的JavaBean中,只有属性声明和该属性对应的setXxx和getXxx方法,(一般不建议)不包含业务逻辑;这种JavaBean可以简单地理解为“数据对象”即可。
Type2: 还有一种JavaBean,其内包含业务处理逻辑,用于处理特定的业务数据;一般使用上面所述的“数据对象”(当然也可能不使用)。
Servlet主要是用来:接收请求、封装‘Type1’的JavaBean、调用‘Type2’的JavaBean的相应业务逻辑方法、向客户端发出响应。
以上是Struts 1.x所使用的模式:ActionForm 就是 Type1的JavaBean,ActionBean就是Type2的JavaBean,ActionServlet即是上面所述的Servlet。 Struts 2.x则是使用 Type1 + Type2的方式(数据对象和业务处理)和Servlet相结合的方式(实际上就是Webwork的方式)。
javaBean和Servlet有什么区别?
什么时候用javaBaen?
什么时候用Servlet,什么时候二者结合使用?
javabean无非就是里面有些set和get方法
servlet用来处理一些逻辑层
javabean说笼统点是实现
javabean、servlet、jsp分别对应M(odel)、C(ontroller)、V(iew)
举例: servlet查询数据库-----javabean保存查询结果-----jsp显示查询结果
javabean就是一个普通的Java类,里面为属性增加了getter和setter并提供默认构造。可以在多层架构的各层存在。想用它作什么都行。
而Servlet是展示层的东西……应当只在展示层存在。常作为MVC中的控制器。
一般说的Mvc模式,Servlet主要充当了C的作用。
javabean和servlet是两回事.因为javabean是一个组件,可以用在任何地方,当然就可以用在servlet里了
按照Sun的定义,所谓的JavaEE应用,是由两大部分组成:(1)组件,表示业务逻辑、表现逻辑,这部分由开发人员完成;(2)标准的系统服务,由JavaEE平台,亦即容器来提供,这个范围之外的都不属于JavaEE应用的范畴。而Servlet,作为JavaEE应用表现逻辑的组件之一,当然是JavaEE应用的一部分。而JavaBean,产生的年代早于J2EE,其技术用途更为广泛不限于JavaEE使用,按照sun的定义,不属于JavaEE技术范围。
其实真正大规模使用JavaBean组件技术的是在Swing中,wing中的所有控件包括JButton,JTree等用的都是JavanBean技术,这些控件的基本编程模型正是大名鼎鼎的MVC模型,不信找出Swing API来,好好研究一下JTree、JTable,就知道什么是真正的JavaBean了。
而Servlet是只能在JavaEE容器中存活的特殊Java类,就像是鱼缸里的鱼,没有容器Servlet是不能生存的。而JavaBean则可以脱离JavaEE环境单独存在,按照Sun的说法,既可以用在客户端,也可以用在服务器端。
所谓的POJO,就是EJB把E字去掉,剩下的JB就是JavaBean,换句话说,JavaBean在J2EE里,甚至可以充当某些EJB完成的任务,用途远大于Servlet。最后的区别,就是 JavaBean的主要用途在于管理JavaEE应用各个层之间的数据流,所以在一些框架中(如Struts)有FormBean和ActionBean的说法,其本质都是为了管理数据。相信如果把上述几点搞清,区分Servlet和JavaBean应当不会很困难的。
JSP和Servlet到底在应用上有什么区别?
简单的说,SUN首先发展出Servlet,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便。 后来SUN推出了类似于ASP的镶嵌型的JSP,把JSP TAG镶嵌到HTML语句中,这样,就大大简化和方便了网页的设计和修改。
新型的网络语言如ASP,PHP,JSP都是镶嵌型的SCRIPT语言。 从网络三层结构的角度看,一个网络项目最少分三层:data layer,business layer, presentation layer。当然也可以更复杂。
Servlet用来写business layer是很强大的,但是对于写presentation layer就很不方便。JSP则主要是为了方便写presentation layer而设计的。当然也可以写business layer。
写惯了ASP,PHP,CGI的朋友,经常会不自觉的把presentation layer和business layer混在一起,就像把数据库处理信息放到JSP中。其实,它应该放在business layer中。根据SUN自己的推荐,JSP中应该仅仅存放与presentation layer有关的东西,也就是说,只放输出HTML网页的部份。而所有的数据计算,数据分析,数据库联结处理,统统是属于business layer,应该放在JavaBean中。通过JSP调用JavaBean,实现两层的整合。
实际上,微软前不久推出的DNA技术,简单说,就是ASP+COM/DCOM技术。与JSP+BEANS完全类似,所有的presentation layer由ASP完成,所有的business layer由COM/DCOM完成。通过调用,实现整合。
为什么要采用这些组件技术呢?因为单纯的ASP/JSP语言是非常低效率执行的,如果出现大量用户点击,纯SCRIPT语言很快就到达了他的功能上限,而组件技术就能大幅度提高功能上限,加快执行速度。
另外一方面,纯SCRIPT语言将presentation layer和business layer混在一起,造成修改不方便,并且代码不能重复利用。如果想修改一个地方,经常会牵涉到十几页CODE,采用组件技术就只改组件就可以了
综上所述,Servlet是一个早期的不完善的产品,写business layer很好,写presentation layer就很臭,并且两层混杂。
所以,推出JSP+Bean,用JSP写presentation layer,用Bean写business layer。SUN自己的意思也是将来用JSP替代Servlet。
可是,这不是说,学了Servlet没用,实际上,还是应该从Servlet入门,再上JSP,再上JSP+BEAN。
强调的是:学了JSP,不会用JavaBean并进行整合,等于没学。大家多花点力气在JSP+Bean上。
我们可以看到,当ASP+COM和JSP+Bean都采用组件技术后,所有的组件都是先进行编译,并驻留内存,然后快速执行。所以,大家经常吹的Servlet/JSP先编译驻内存后执行的速度优势就没有了。
反之,ASP+COM+IIS+NT紧密整合,应该会有较大的速度优势呈现。而且,ASP+COM+IIS+NT开发效率非常高,虽然BUG很多。
那么,为什么还用JSP+Bean?
因为JAVA实在前途远大。微软分拆后,操作系统将群雄并起,应用软件的开发商必定要找一个通用开发语言进行开发,JAVA一统天下的时机就到了。如果微软分拆顺利,从中分出的应用软件公司将成为JAVA的新领导者。
目前的JAVA大头SUN和IBM都死气沉沉,令人失望。希望新公司能注入新活力。不过,新公司很有可能和旧SUN展开JAVA标准大战,双方各自制定标准,影响JAVA夸平台。
另外,现在的机器速度越来越快,JAVA的速度劣势很快就可以被克服。javabean可以作为模型+控制,也可以单做模型,也可以只用来做数据传递(JSP发送数据到Bean,BeanN执行execute,操作数据库,反之也可)
如果还没学到其它框架,如HIBERNATE,SPRING,STRUTS等。那javabean的作用是用来作数据的装载,这种bean我称为数据bean,比如从数据库上查询出的记录可以保存在数据bean中。
javabean的另一外作用是用来处理一些业务逻辑,比如可以在javabean中用JDBC去访问数据库,从而从数据库中加载信息到数据bean中,也可以从数据库中删除、保存数据等。
而Servlet的作用主要是用来控制页面的跳转,比如说从login.jsp发一个请求到Servlet中,Servlet调用业务bean的方法去查询数据库是否有此密码和用户名,如果正确Servlet就可以用request或者response对象的方法跳转到想要的页面。
JSP开发的两种模式
模式一:JSP+JavaBeans
这就是指JSP+JavaBean技术。在模式一中,JSP页面独自响应请求并将处理结果返回客户。所有的数据通过Bean来处理JSP实现页面的表现。模式一技术也实现了页面的表现--和页面的商业逻辑相分离。
大量使用模式形式,常常会导致页面被嵌入大量的脚本语言或JAVA代码。当需要处理的商业逻辑很复杂时,这种情况会变得非常糟糕。大量的代码会使整个页面变得非常复杂。对于前端界面设计人员来说,这简直不可想象。
这种情况在大项目中最为常见,这也造成了代码的开发和维护出现困难,造成了不必要的资源浪费,在任何项目中,这样的模式总会导致多多少少的定义不清的响应和项目管理的困难。
综上所诉,模式一不能满足大型项目的需要,但是可以较好的满足小型应用,在简单的应用中可以考虑模式一。
模式二:JSP+Servlet+JavaBeans
Servlets技术是一种采用JAVA技术来实现CGI功能的一种术。Servlets技术是运行在WEB服务器上,用来生成WEB页面。Servlets技术非常适用于服务器端的处理和编程,并且Servlet会长期驻留在他们所处的位置。
但是在实际的项目开发过程中,页面设计者可以方便地使用普通HTML工具来开发JSP页面Servlet却更适合于后端开发者使用,开发Servlet需要的是JAVA集成开发环境,也就是说Servlet技术更需要编程人员。
模式二技术结合了JSP和Servlet技术充分体现了两者的技术优点。在此模式中通过JSP来表现页面。通过Servlet来完成大量的事务处理。Servlet充当一个控制者的角色,并负责向客户发送请求。Servlet创建JSP所需要的Bean和对象,然后根据用户的请求行为,决定将哪个JSP页面发送给客户。
从开发的观点,模式二具有更清晰的页面表现,清楚的开发者角色划分,可以充分利用开发小组的界面设计人员,这些优势在大型项目开发中表现的尤为突出,使用这一模式,可以充分发挥每个开发者各自的特长,界面设计人员可以充分发挥自己的表现力,设计出优美的界面表现形式,设计人员可以充分发挥自己的商务处理思维,来实现项目中的业务处理。在大型项目中,模式二更被采用。
Servlet是一种独立于平台和协议的位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
Java的Servlet与JSP(JavaServerPages)的比较:
JavaServerPages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术,JSP并没有增加任何本质上不能用Servlet实现的功能。但是,在 JSP中编写静态HTML更加方便,不必再用println语句来输出每一行HTML代码。更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计者进行HTML设计,同时留出供Servlet程序员插入动态内容的空间。
JSP动态Web内容可能是动态Web内容的一项伟大的技术,并可将内容和表示presentation相分离,那为什么servlets仍然有必要和JSP同时实施?
其实servlets的实用性并不是一个问题。它们在服务器端处理方面的表现非常优秀,而且,由于它们引人注目的安装方式而继续存在着。事实上,可以将 JSP看作一种servlets的高级抽象,它以Servlet2.1的API扩展的形式来实现。
注意:不应该不加选择地使用servlets;它们可能并不适用于每个人。例如,当一个页面设计者可以很简单地使用方便的HTML或XML工具来编写 JSP页面时,servlets可能更适合那些在后端的开发者,因为他们经常使用某种IDE来编写。这是一种通常需要较高编程经验的处理工作。
当发布servlets时,甚至开发者都不得不小心确保在presentation和内容之间不存在紧密结合。通常可以通过增加一个第三方发行包如 htmlKona来做到这一点。但即使可以做到这一点,虽然可以通过简单的屏幕上的调整提供一些灵活性,仍无法保证在presentation自身格式上的变化。例如,如果你的presentation从HTML改变到DHTML,将仍然需要确保发行包和新的格式相一致,在最坏的case--scenario中,如果一个发行包无法得到,你将结束在动态web的内容中对presentation使用手写代码。所以,解决方法是什么呢?
方法之一就是同时使用JSP和servlet技术来建立应用系统。
编写一个猜数字的程序,当客户访问服务器上的Guess.jsp时,随机分配给客户一个1-100之间的数字,然后将这
很简单。在JSP中是可以嵌套JAVA代码的,如
%
Random r = new Random();
int answer= r.nextInt(100);
request.getSession.setAttribute("answer",answer);
%
保存随机数到session,判断,
request.getParameter("guessNumber").equals(request.getSession.getAttribute("answer"))
根据结果跳转到不同的页面,返回用个js技术,这个网上很多,就不说了。
JSP 中的JavaBean问题 大神请进 编写一个JavaBean,该JavaBean有一个属性n,属
如果你的框架是用Spring,完全可以把方法定义成getSum(),然后jsp中写bean.sum,Spring会自动调用这个bean的getSum(),如果是其他框架或者原生Servlet,可以写个很蠢的方法就是,在该javaBean中添加一个属性叫sum,然后setN()中调用sum(),并将返回的值设置为sum
用JSP编写一个猜数游戏程序
在一个页面上帮你搞定了。。。你自己看看然后再分把
%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%
!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""
html
head
meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
title这是一个猜数字的小游戏/title
/head
body
center
%
//保存随机数
int num=-1;
//猜测的次数
int flg=0;
//如果用户是第一次进入则生成随机数
if(session.isNew())
{
//生成0-100之间的随机数
num=(int)(Math.random()*101);
//将随机数保存在session中
session.setAttribute("num",num);
}
else
{
num=Integer.parseInt(session.getAttribute("num").toString());
}
//次数累加
if(request.getParameter("number")!=null)
flg=Integer.parseInt(session.getAttribute("flg").toString())+1;
System.out.println(flg);
//保存猜测的次数
session.setAttribute("flg",flg);
%
form action="" method="post"
请输入所要猜测的数字:
input type="text" name="number"
input type="submit" value="提交"
/form
%
if(request.getParameter("number")!=null)
{
//获得用户所猜测的数字
int num1=-1;
num1=Integer.parseInt(request.getParameter("number"));
if(num1num)
out.println("你猜的数太大了!br");
if(num1num)
out.println("你猜的数太小了!br");
if(num1==num)
out.println("恭喜你猜对了!br");
out.println("你已经猜了"+flg+"次");
}
%
/center
/body
/html
jsp与javaBean的关系??
没有关系 但是jsp表单中的数据可以传给javaBean jsp 也可以显示javaBean中定义的属性值
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。
JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。
在jsp中使用JavaBean连接数据库
这个是连接access的javaBean,首先配置access数据源,数据源名称设为info.mdb,此文件放在test文件夹下,编译后将生成的infoBean.class放在claeese下的test文件夹下即可。用access写个数据库info.mdb里面写个表student,两个字段id name。
package test;
import java.sql.*;
public class infoBean{
private String ab="sun.jdbc.odbc.JdbcOdbcDriver";
private String ac="JDBC:odbc:info.mdb";
Connection conn=null;
ResultSet rs=null;
Statement stmt;
public infoBean(){
try{
Class.forName(ab);}
catch(java.lang.ClassNotFoundException e){
System.out.println("infoBean():"+e.getMessage());}
}
public ResultSet executeQuery(String sql){
rs=null;
try{
conn=DriverManager.getConnection(ac);
stmt=conn.createStatement();
rs = stmt.executeQuery(sql);}
catch(SQLException ex){
System.err.println("aq.executeQuery:"+ex.getMessage());}
return rs;
}
public void executeUpdate(String sql)
{stmt=null;
rs=null;
try{
conn=DriverManager.getConnection(ac);
stmt=conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();}
catch(SQLException e1)
{System.err.println("executeUpdate:" + e1.getMessage()); }
}
public void closeStmt()
{
try{
stmt.close();
}
catch (SQLException e2)
{
e2.printStackTrace();
}
}
public void closeConn()
{
try{
conn.close();
}
catch (SQLException e3)
{
e3.printStackTrace();
}
}
}
在jsp页面中引用时,显示数据库内容:
%@ page contentType="text/html;charset=GB2312" import="java.sql.*" %
jsp:useBean id="inBean" class="test.infoBean" scope="page"/htmlhead/headbodytable
trth11/thth11/th/tr
%
ResultSet rs=inBean.executeQuery("SELECT * FROM student");
while rs.next(){
%
trtd%=rs.getString(1)%/tdtd%=rs.getString(2)%/td/tr
%}%
/table/body/html
在jsp中删除,
%@ page contentType="text/html;charset=GB2312" import="java.sql.*" %
jsp:useBean id="inBean" class="test.infoBean" scope="page"/htmlhead/headbody
%
String id=request.getParameter("id");
inBean.executeUpdate("Delete from student where id='"+id+"'");
%
/body/html
其中id是上一个页面传过来的;
jsp中修改:
%@ page contentType="text/html;charset=GB2312" import="java.sql.*" %
jsp:useBean id="inBean" class="test.infoBean" scope="page"/htmlhead/headbody
%
String id=request.getParameter("id");
String name=request.getParameter("name");
inBean.executeUpdate("update student set name='"+name+"' where id='"+id+"'");
%
/body/html
我还有javaBean连接mysql,sql server的例子,也有关于javaBean完整简单的小项目,你要的话,给邮箱,发给你