| | | |
2.java web实习报告 篇二
如何将HTML开发和JSP开发分离呢?第一是采用Java-Bean组件编程技术,另一种形式则是使用JSP标签(Tag)技术。
l )在JSP中使用Java Beans来完成业务功能比直接在JSP页面中插入Java程序要好得多,但是对页面的设计者来说要求熟悉Java程序编程,在JSP页面中对Java Bean中的各个属性和方法进行调用。
2)通过使用标签技术,就可以在页面程序中不出现Java程序代码,并且可以对Java Bean中的各个功能进行标签化,然后页面的设计者通过使用标签来实现对Java Bean中的后台处理程序进行调用。这样,HTML开发人员专注于页面的外观设计,而Java程序员则专注于后台程序代码的开发,大大提高了程序的可读性、维护性和方便性,也便于各程序员之间的协作开发。JSP程序员可以建立定制标签和后端代码模块,而Web设计人员则可以使用这些定制标签并且全力关注于页面设计。
1 什么是标签库
JSP标签库也被称作定制标签,是一种通过Java Bean生成基于XML的脚本的方法。实际上,标签就是简单而且可重用的代码模块。
定制标签使得在JSP项目中很容易创建重用的开放源代码模块。通过标记库可以定义出现在JSP页面中的自定义标签,可以把特定的Java代码与每个标记都关联起来。例如,如果要访问一个天气情况数据库,而且需要输出当前的天气状况。那么,就可以在JSP中插入JDBC程序代码直接查询数据库,把这些代码封装到一个Java Bean内,或者把它定义成一个标记库。
2 标签库的特性
2.1 易于在多个项目上安装
标签很容易从一个JSP项目移植到另一个项目。一旦建立了一个标签库,只需要把这个标签库定义成一个JAR文件就可以在其他JSP项目中重新使用了,而在建立标签时所加进标签的内容是不能重用的。因为标签可以重新使用,所以标签库可以很方便地用于其他的项目。.
2.2 易于扩展JSP功能
标签库具备JSP规范中的任何特性和功能。这也意味着拥有无限的能力可以扩展和增加JSP的强大功能却无需等待新版本JSP的发布。甚至于,完全可以取消页面上的JSP include调用功能,只需用include标签建立自己的规范就行了。
2.3 易于维护
标签库的定义使用使得JSP Web应用程序变得很容易维护,从而减轻开发人员的负担。
3 使用标签库taglib技术简化程序设计
<htm L>、<table>等均为HTML中的标签,而<jsp:forward>是一个标签库中的某个标签,其中Jsp为该标签库的库名,forward为标签名称。
在JSP中,一个标签看起来很象一个标准的HTML标签。但是,它的逻辑不在客户端被执行,而是由服务器端的Servlet来转换。每个标签被封装到一个独立的类,它的名字和参数属性被一个特殊的.tld扩展名的部署描叙文件指出。
通过使用标签库技术也能使网页设计师不用编程JSP的Java代码就操作复杂的数据库和事务等。特别适用于需要重复使用某一段程序的地方。
4 标准标签库的应用方法
标准标签库(JSTL)是一组能够方便用户操作的标签,能够完成很多常用的功能。JSTL在刚开始时是作为一个开源项目供大家使用的,在JSP2.0之后,JSTL已经成为JSP的一部分。标准标签库是根据JSP提供的自定义标签机制完成的。自定义标签能够把一些处理功能封装起来,其使用与普通的JSP标签一样简单。标准标签库的用法与所的自定义标签库的用法完全相同。
要使用自定义标签库中的标签,需执行如下几个过程:
编写标签库、部署标签库、使用taglib指令声明要使用的标签库、访问标签库中的标签。
1)编写标签库包括两部分:编写实现文件和编写标签库描述文件。因为标签库实际上就是使用java文件实现功能,然后像使用普通JSP标签那样使用自己定义的标签库,所以需要编写功能的实现文件。
2)部署标签库:就是把要使用的标签库放到应用中。标准标签库的相关文件在两个压缩包jstl.jar和standard.jar中,所以部署的时候只需把这两个压缩包放到WEB-INF目录lib子目录中即可。下载这两个压缩包的网址分别是:
http://repo2.maven.org/maven2/javax/servlet/jstl/ http://repo2.maven.org/maven2/taglibs/standard/
修改WEB-INF目录下的web.xml文件以定位标签的*.tld文件
自定义的标签库名的前缀,请不要用servlet, sun, 和sunw做为前缀
进行标记使用声明,声明此JSP文件使用了自定义的标签,同时引用标签库,也指定其标签的前缀。
</taglib-location>
</taglib>
</web-app>
3)JSP页面上的标签库声明:使用标签库标示符即可方便地声明页面上存在的标签。标签库在页面上声明之后,就可以随意使用它们了。例如:
<% @ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”%>
该标签库的标识是http://java.sun.com/jsp/jstl/core,前缀是c.
4)使用标签库的标签:
标签库中标签的使用方法应该依据tld文件对该标签的描述来确定。如:
5总结
JSP标签从本质上代表着一个JSP功能的调用,即一个标签的使用就是一次函数调用。同时标签也具有Java Bean所具有的业务逻辑处理能力。其优点是JSP标签能够处理JSP正文的内容,比如改变页面的显示样式,而Java Bean不可以;JSP标签接口简单,易于实现,也易于开发和维护。而缺点是JSP标签在进行部署时要比Java Bean复杂得多,主要体现在配置JSP标签库描述文件tld上。
参考文献
[1]李绪成.Java Web程序设计基础教程[M].西安:西安电子科技大学出版社,2007:61-64.
[2]杨树林.Java Web应用技术与案例教程[M].北京:人民邮电出版社,2011:19-42.
3.javaweb简历项目经验 篇三
软件环境:Apache Tomcat 6.0.18/ Oracle 10i k1.6.12/Jboss 4.2.3
开发工具:MyEclipse6.5,Dreamweaver 等开发工具
责任描述:本人主要负责成品表与bom配方表的管理,根据BOM单的信息用原材料制作成品。web层使用成熟的struts框架;控制层使用spring托管所有的action;业务层用到spring的任务调度框架实现系统的自动化管理;持久层使用成熟的hibernate技术,通过Spring提供的HibernateTemplate和Hiberante API可以很好的解决代码的重复冗余问题.
项目描述:本系统是为长沙市东美来食顺餐饮有限公司 定制的用来管理销售的软件;
本系统主要考虑了最为普遍的销售管理要求:
进货时入库登记,以便日后查看和统计进货情况
销售时把相应数量的商品从现存商品库中减去,并记录于另外的一个销售库中,以便日后查看和统计销售信息,并向总部提交销售商品单,并且根据需求提交订单。
是销售就难免会有顾客退货的情况发生,因此还需建立一个相应的退货管理,把退回来的货加入现存商品库,再从销售库中减去,进行退货登记
4.大二实训JavaWeb学习心得 篇四
容我先说句废话,经过同学们多次的互相理论与向上建议,对于第二次次实习地点安排在学校这个结果我还是非常高兴的,毕竟少了很多旅途劳累。
这次实习内容是java web,我想应该与本学期开过javaweb这门课有关,毕竟上学期学过java和数据库,本觉得应该会比较轻松,开始之前大家都说这实习可是可以放松了,可是等老师开始讲之后发现这个东西理论上知识点不多,可是应用起来还是感到非常困难。
这次实习老师风格与上次实习的那位不同,去年那简直是从零开始讲,这次上来没细讲java和SQL,直接jsp。于是上学期开过的、纸上谈兵的java课就露出破绽了,简直要从头学起,更别说与jsp、sql融合了。另外用jsp写网页嘛,这个语言不是很火,去Github上找,开发web应用的大多是php、python,而servlet这个东西非常基础,甚至并不能算作一个开发框架,所以网上的资料也并不好找,网上都是些Struts2、Spring3、Hibernate,总之这开始的时候就很是艰难,晚上回到宿舍也经常要花很多时间来补之前的知识,java封装继承什么的,当然,这很累。
白天听课并不能高效的吸收老师所讲的,下来问了一下同学们是差不多的情况,可能是老师的节奏我们不太习惯。不过这学完也终究是会了一些,大概说一下,JSP全名 Java Server Pages,一种动态网页技术,所谓动态就是可以与用户交互就像论坛什么的,而html静态页面就是只能给用户看的。首先,我们配置了几个环境:java的JDK和服务器Tomcat。至于IDE,我还是用我比较顺手的jetbrain家的IntelliJ IDEA,对了,不用Eclipse是因为它丑。
之前都是写静态页面,对于动态页面的环境配置还真是头疼了一段时间,看了一些博客,发现这个主要是在File——ProjectStructure配置依赖的jar包,还有就是 tomcat服务器的配置。配置好了开始学JSP内部对象及内部对象所对应的一些方法。再就是JSP与数据库的联系,怎么样操作Mysql数据库等等。
在用一种语言写程序的时候,demo通常是零星几个功能的尝试,而去写一个偏实战的项目时,是需要从需求分析、模块设计到实现功能的一整套流程,这些我们从来没有做过,当我们C05开源盛世(项目组)开始做项目的时候,第一步的需求分析就费了好多功夫,功能点想的不全面,导致中途还要进行改动。模块设计也是类似的情况,低内聚高耦合这种理念可是不好理解。此处多谢伙伴们抬举,我这个组长也是个没当过组长的新手,可能是命题选的比较偏(做的东西类似知乎),在开始时就遇到了一些棘手的问题。
做这个项目对团队的协作能力要求很高,在这里,我作为组长出了这么几个大的纰漏:程序框架搭的不够细致、项目约定不够全面、没有及时收集组员的进度反馈、同步项目文件的频率太低,实现顺序不当导致功率浪费。这些导致我们5个人开始不久就发生了如下问题:类名冲突、同一个模块写了两遍、制作前台的进度没有与后台进度同步,导致了不能及时测试与调试程序。
5.java web实习报告 篇五
一、实验目的
(1)掌握Java类的继承关系和派生方法。(2)理解多态的概念与使用。(3)掌握接口的定义和使用。
二、实验任务
(1)按要求编写一个Java程序。
(2)按要求完善一个Java程序,编译、运行这个程序,并写出运行结果。
三、实验内容
1.编写一个Java程序片断,以定义一个表示学生的类Student。这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”、“获得年龄”。2.为类Student增加一个方法public String toString(),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。编写一个Java Application程序,创建Student类的对象,并验证新增加的功能。
四、调试过程
五、运行结果
六、心得体会
实验代码: package taru.cn;public class SuperClass {
} int x;SuperClass(){
x=3;} voiddoSomething(){ System.out.println(“in SuperClass.doSomething()”);System.out.println(“in SuperClass : x=” +x);
} package taru.cn;public class SubClass extends SuperClass {
int x;SubClass(){
}
super();//调用父类的构造方法
} voiddoSomething(){
super.doSomething();//调用父类的方法 x=5;
//super()要放在方法中的第一句
System.out.println(“in SubClass :x=”+x);System.out.println(“in SubClass.doSomething()”);System.out.println(“super.x=”+super.x+“ sub.x=”+x);} package taru.cn;class Student{
longstudentID;intclassID;String name;
String sex;int age;
public Student(long studentID,intclassID,Stringname,Stringsex,int age){
this.studentID=studentID;
this.classID=classID;
this.name=name;this.sex=sex;this.age=age;}
public long getStudentID(){
returnstudentID;} publicintgetClassID(){ returnclassID;} public String getName(){
return name;}
public String getSex(){ return sex;}
publicintgetAge(){ return age;}
public String toString(){
return “学号:”+getStudentID()+“n班号:”+getClassID()+“n姓名:”+getName()+“n性别:”+getSex()+“n年龄:”+getAge();} }
package taru.cn;public class StudentDemo1 {
public static void main(String args[]){
Undergraduate st1 = new Undergraduate(“张三”,50,70,60);
st1.Display();
Graduate st2=new Graduate(“李四”,70,80,90);
st2.Display();
}
} package taru.cn;
public class Inheritance {
} public static void main(String args[]){
6.java web实习报告 篇六
下面是一个简单的EJBClient.java代码
packagecom.zuijiajiao.Servlab.HelloWorld.test;
importjava.util.Properties;
importjavax.naming.InitialContext;importjavax.naming.NamingException;
importcom.zuijiajiao.Servlab.HelloWorld.HelloWorld;
publicclassEJBClient {
} publicstaticvoid main(String[] args){
} Properties props = newProperties();
props.setProperty(“java.naming.factory.inital”,“org.jnp.interfaces.NamingContextFactory”);props.setProperty(“java.naming.provider.url”, try {
InitialContextctx = newInitialContext(props);HelloWorld helloWorld =(HelloWorld)ctx.lookup(“HelloWorldBean/remote”);
“localhost:1099”);System.out.println(helloWorld.sayHello(“电子科大”));} catch(NamingExceptione){
} // TODO: handle exception
System.out.println(e.getMessage());其中,红色突出部分代码就是用于设置JNDI的上下文信使。
props.setProperty(“java.naming.factory.inital”,这句代码用于设置JNDI的链接工厂,第一个参数,是固定的写法,有JNDI规范所规定,第二个参数就是JBoss的链接工厂; 于是,JNDI通过这个链接工厂就可以和JBoss进行通信了;
props.setProperty(“java.naming.provider.url”, “localhost:1099”);这句代码用于设置命名服务器的链接URL 第一个参数是固定的写法,有JNDI规范所规定,第二个参数就是JBoss的连接字符串 JNDI通过JBoss的连接字符串就可以知道JBoss它所在的地址,还有它所使用的端口号
“org.jnp.interfaces.NamingContextFactory”);如果访问不同的服务器,那两句代码设置的参数值也是不一样的设置完JNDI的上下文信息后,就可以调用它的lookup方法,根据EJB的JNDI名称(“HelloWorldBean/remote”),去寻找与这个名称绑定(Bind)的EJB代理存根对象,找到代理存根对象之后,他就可以返回到客户端(Client)。在客户端,通过接口文件去引用这个代理存根对象
HelloWorld helloWorld =(HelloWorld)ctx
.lookup(“HelloWorldBean/remote”);通过这个这个代理对象(helloWorld)就可以调用EJB的业务方法。
疑问:如何知道EJB的JNDI名称?
速度当EJB部署到JBoss应用服务器的时候,JBoss服务器可以为EJB默认生成一个JNDI名称
默认生成JNDI名称的规则
注意事项:
Properties props = newProperties();
props.setProperty(“java.naming.factory.inital”,“org.jnp.interfaces.NamingContextFactory”);props.setProperty(“java.naming.provider.url”, “localhost:1099”);用这种方式来设置JNDI的上下文信息,属于“硬编码”设置,也可以通过一个属性文件(xxx.properties)来设置JNDI的上下文信使
通过属性文件来设置JNDI的上下文信使的方法:
在项目的类路径下建立一个名叫JNDI的属性文件(JNDI.properties)(也可以在源目录(src)下建,因为在源目录下建也是可以编译到项目的类路径下)JNDI属性文件代码如下
java.naming.factory.inital = org.jnp.interfaces.NamingContextFactory java.naming.provider.url = localhost:1099
有了属性文件之后,代码就可以这样写了
packagecom.zuijiajiao.Servlab.HelloWorld.test;
importjava.util.Properties;
importjavax.naming.InitialContext;importjavax.naming.NamingException;
importcom.zuijiajiao.Servlab.HelloWorld.HelloWorld;
publicclassEJBClient {
}
原理:
InitialContextctx = newInitialContext();
在new InitialContext这个对象的时候,在InitialContext的构造函数内部他在项目的类路径下寻找这个属性文件 publicstaticvoid main(String[] args){
} try {
InitialContextctx = newInitialContext();HelloWorld helloWorld =(HelloWorld)ctx.lookup(“HelloWorldBean/remote”);
System.out.println(helloWorld.sayHello(“电子科大”));} catch(NamingExceptione){
} // TODO: handle exception
上一篇:年终工作总结主持稿下一篇:心中有目标就一定能实现作文
---|