在Eclipse中创建Spring的Web应用_第1页
在Eclipse中创建Spring的Web应用_第2页
在Eclipse中创建Spring的Web应用_第3页
在Eclipse中创建Spring的Web应用_第4页
在Eclipse中创建Spring的Web应用_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、spring中的web应用组件1、spring web 模块中的org.springframework.web.context. webapplicationcontext接口与beanfactory通常以编程的方式被创建不同的是,applicationcontext能以声明的方式创建,如使用contextloader。当然你也可以使用applicationcontext的实现之一来以编程的方式创建applicationcontext实例。对于web应用,spring提供了可配置的applicationcontext加载机制org.springframework.web.context.con

2、textloader类。contextloader加载器目前有两种选择(1)org.springframework.web.context.contextloaderlistener(2)org.springframework.web.context.contextloaderservlet2、实现的方法主要的工作包括下载springframework最新版本,并将所需要的*.jar 拷贝到web项目的lib中;同时在web.xml中配置spring的启动方式-可以采用listener方式或servlet方式;最后设置spring配置文件。(1)在web.xml中增加下面对contextloa

3、der的配置项目从而可以实现以配置的方式来加载*.xml文件,从而避免以编程的方式来加载*.xml文件-而由contextloaderlistener来加载我们的*.xml文件。<listener><listener-class> org.springframework.web.context.contextloaderlistener</listener-class>只能部署在支持servlet2.3以上的web容器中配置注意其名称为context</listener>或:<servlet><servlet-name>c

4、ontext</servlet-name><servlet-class> org.springframework.web.context.contextloaderservlet必须设置为1,从而在web应用启动的时候来初始化webapplicationcontext</servlet-class><load-on-startup>1</load-on-startup></servlet>通过以上配置,web容器会自动加载/web-inf/applicationcontext.xml(默认的情况下为applicationc

5、ontext.xml,我们也可以修改为其它的文件名称-但要通过<context-param>来说明)初始化applicationcontext实例,如果需要指定配置文件位置,可通过context-param加以指定:(2)在web.xml中通过<context-param>来定义它的配置参数<context-param><param-name>contextconfiglocation</param-name><param-value>/web-inf/springwebapplicationcontext.xml<

6、/param-value>默认的情况下为applicationcontext.xml</context-param>注意:也可以为多个配置文件context-paramparam-namecontextconfiglocation/param-name分隔符也可以为空格符param-value/web-inf/applicationcontext-hibernate.xml,/web-inf/applicationcontext-service.xml/param-value/context-param(3)在web应用中获取applicationcontext和servle

7、tcontext的引用l 获取applicationcontext引用配置完成之后,即可通过 webapplicationcontextutils.getwebapplicationcontext方法在web应用中获取applicationcontext引用。代码示例如下:applicationcontext applicationcontext= webapplicationcontextutils.getwebapplicationcontext(this.getservletcontext();l 获得当前web应用的servletcontext利用webapplicationconte

8、xt 接口中的getservletcontext()方法,可以获得当前web应用的servletcontext。在eclipse 中创建spring的web应用1、在eclipse中开发spring web应用(1)在eclipse中新建一个web project,名称为springwebapp并且命名该项目为springwebapp最后出现下面的状态改变其context名称为 springweb以保持与jbuilder中的一致。(2)在该web应用中增加一个表示层的jsp页面,名称为index<% page contenttype="text/html; charset=gb

9、k" %><html><head><title>index</title></head><body bgcolor="#ffffff"><h1> 这是我的第一个spring web应用</h1><a href="/springweb/userloginservlet?username=yang&userpassword=1234">点击我,可以向spring的控制器发出请求(利用spring web技术)</a>

10、</body></html>(3)在该web应用所在的project中添加前面的springjar库包(主要涉及spring.jar、commons-logging.jar和log4j-1.2.9.jar)最后在 lib目录下应该出现下面的状态2、在该web应用中的index.jsp页面中增加一个表单<% page contenttype="text/html; charset=gbk" %><html><head><title>index</title></head><b

11、ody bgcolor="#ffffff"><h1> 这是我的第一个spring web应用</h1><a href="userloginservlet?username=yang&userpassword=1234"> 点击我,可以向spring的控制器发出请求(利用spring web技术) </a><br /><br />* 下面为采用普通的web技术并利用spring web模块 *<form action="/userloginservlet

12、" method="post"> 请输入用户名称:<input type="text" name="username"><br> 请输入用户密码:<input type="password" name="userpassword"><br><input type="submit" value="提交"> <input type="reset" value=

13、"重来"> </form></body></html>3、在该web应用所在的project中添加一个对用户登录进行响应的servlet (作为我们的控制器)(1)类名称为:usermanageservlet,包名称为com.px1987.springwebapp.servleturl-pattern为:/userloginservlet最后,将产生除一个空的servlet在web.xml文件中同时添加其配置(2)编程该servlet以获得用户登录表单和超链接中的请求package com.px1987.springwebapp.s

14、ervlet;import java.io.ioexception;import java.io.printwriter;import javax.servlet.servletexception;import javax.servlet.http.httpservlet;import javax.servlet.http.httpservletrequest;import javax.servlet.http.httpservletresponse;public class usermanageservlet extends httpservlet private static final

15、string content_type = "text/html; charset=gbk" public void init() throws servletexception public void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception response.setcontenttype(content_type); printwriter out = response.getwriter(); request

16、.setcharacterencoding("gb2312"); string username=request.getparameter("username").trim(); string userpassword=request.getparameter("userpassword").trim(); boolean okornot=username.equals("yang")&&userpassword.equals("1234"); if(okornot) /实际应该

17、改变为对业务组件的调用,请见后面 out.print("您登录成功!"); else out.print("您登录失败!"); public void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception this.dopost(request, response); public void destroy() 4、perties的属性配置文件(1)spring采用apache common

18、_loggingspring采用apache common_logging,并结合apache log4j作为日志输出组件。为了在调试过程中能观察到spring的日志输出,在classpath中新建perties配置文件。(2)设计自己的log4j. properties可以从samples/petclinic/war/web-inf/perties拷贝一份模板文件到本web应用的web-inf/classes目录中。(3)设置其log输出的文件目录# for jboss: avoid to setup log4j outside $jboss_home/s

19、erver/default/deploy/log4j.xml!# for all other servers: comment out the log4j listener in web.xml to activate log4j.log4j.rootlogger=info, stdout, logfilelog4j.appender.stdout=org.apache.log4j.consoleappenderlog4j.appender.stdout.layout=org.apache.log4j.patternlayoutlog4j.appender.stdout.layout.conv

20、ersionpattern=%d %p %c - <%m>%nlog4j.appender.logfile=org.apache.log4j.rollingfileappenderlog4j.appender.logfile.file=springapp.loglog4j.appender.logfile.maxfilesize=512kb# keep three backup files.log4j.appender.logfile.maxbackupindex=3# pattern to output: date priority category - messagelog4j

21、.appender.logfile.layout=org.apache.log4j.patternlayoutlog4j.appender.logfile.layout.conversionpattern=%d %p %c - %m%n注意:应该首先替换掉原来的log4j.appender.logfile.file=$petclinic.root/web-inf/petclinic.log设置项目同时,上面的springapp.log文件将会被保存到tomcat的bin目录下。5、执行该web应用以检查是否正常(1)配置服务器(2)部署本web应用系统最后应该在tomcat的webapps目录

22、下出现下面的状态(3)启动服务器(4)测试该页面输入:8080/springweb/index.jsp输入用户名称为 yang,密码为1234。则应该出现下面的状态-将出现用户登录成功的提示如果输入错误信息,应该出现下面的错误状态也可以点击超链接,将出现下面的状态提示6、在该project中添加业务处理组件类(1)添加userinfovo类,包名称为com.px1987.springwebapp.model在该类中添加下面的成员private string username;private string userpassword;为它们提供get/set方法(2)

23、添加一个接口,名称为usermanagerinterface,包名称为com.px1987.springwebapp.model在接口中添加一个方法package com.px1987.springwebapp.model;public interface usermanagerinterface public abstract boolean douserlogin(userinfovo oneuserinfo); (3)添加一个对接口的实现类,名称为usermanagerimple,包名称为com.px1987.springwebapp.model编程该业务实现类package com.p

24、x1987.springwebapp.model;public class usermanagerimple implements usermanagerinterface public usermanagerimple() public boolean douserlogin(userinfovo oneuserinfo) string username=oneuserinfo.getusername(); string userpassword=oneuserinfo.getuserpassword(); boolean okornot=username.equals("yang

25、")&&userpassword.equals("1234"); if(okornot) /实际一个改变为对数据库表的访问 okornot=true; else okornot=false; return okornot; 7、将该业务组件类放入spring的ioc容器中以便由其进行管理(1)在web.xml中增加下面对contextloader的配置项目<listener><listener-class> org.springframework.web.context.contextloaderlistener</l

26、istener-class></listener>(2)在web.xml中通过<context-param>默认的情况下为applicationcontext.xml来定义其它的配置文件<context-param><param-name>contextconfiglocation</param-name><param-value>/web-inf/springwebapplicationcontext.xml</param-value></context-param>(3)设计一个sprin

27、g的ioc的配置文件springwebapplicationcontext.xml并放在web-inf/目录中该文件的内容如下(spring 1.2版) <?xml version="1.0" encoding="utf-8"?><!doctype beans public "-/spring/dtd bean/en" "/dtd/spring-beans.dtd"> <beans> <bean id="u

28、serloginimplebeanweb" class="springwebapp.userloginimpleweb"/> </beans>而对于spring 2.0版为下面<?xml version="1.0" encoding="utf-8"?><!doctype beans public "-/spring/dtd bean 2.0/en" "/dtd/spring-beans-2.0.dtd&

29、quot;> <beans> <bean id="userloginimplebeanweb" class="springwebapp.userloginimpleweb"/> </beans>(4)在用户登录的servlet中获得该业务组件类的对象l 首先通过 webapplicationcontextutils.getwebapplicationcontext方法在web应用中获取applicationcontext引用。applicationcontext applicationcontext= webap

30、plicationcontextutils.getwebapplicationcontext(this.getservletcontext();l 再获得业务组件类的对象(但为接口类型)usermanagerinterface usermanagerimple=(usermanagerinterface)applicationcontext.getbean("usermanagerimple");l 完整的代码如下package com.px1987.springwebapp.servlet;import java.io.ioexception;import java.io

31、.printwriter;import javax.servlet.servletexception;import javax.servlet.http.httpservlet;import javax.servlet.http.httpservletrequest;import javax.servlet.http.httpservletresponse;import org.springframework.context.applicationcontext;import org.springframework.web.context.support.webapplicationconte

32、xtutils;import com.px1987.springwebapp.model.*;public class usermanageservlet extends httpservlet private static final string content_type = "text/html; charset=gbk" public void init() throws servletexception public void dopost(httpservletrequest request, httpservletresponse response) thro

33、ws servletexception, ioexception response.setcontenttype(content_type); printwriter out = response.getwriter(); request.setcharacterencoding("gb2312"); string username=request.getparameter("username").trim(); string userpassword=request.getparameter("userpassword").trim

34、(); applicationcontext applicationcontext= webapplicationcontextutils.getwebapplicationcontext(this.getservletcontext(); usermanagerinterface usermanagerimple=(usermanagerinterface)applicationcontext.getbean("usermanagerimple"); userinfovo oneuserinfo=new userinfovo(); oneuserinfo.setusern

35、ame(username); oneuserinfo.setuserpassword(userpassword); boolean okornot=usermanagerimple.douserlogin(oneuserinfo); if(okornot) out.print("您登录成功!"); else out.print("您登录失败!"); public void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioe

36、xception this.dopost(request, response); public void destroy() 8、再执行该 web应用(1)再部署本web系统(2)再启动服务器(3)再浏览本页面输入:8080/springweb/index.jsp输入用户名称:yang和密码:1234后,同样也出现下面的 用户登录成功的提示,说明已经由业务组件类进行处理。(2)如果输入错误的登录信息,将出现下面的错误提示(3)观察所产生的*.log文件同时在tomcat的bin目录中出现*.log文件9、为该示例添加数据访问层dao组件(1)添加一个接口,名称为d

37、aointerface(2)在该接口中提供下面的各个方法package springwebapp;import java.sql.*;public interface daointerface public resultset selectdbdata(string select_sqlstatement); public boolean insertdbdata(string insert_sqlstatement); public boolean deletedbdata(string delete_sqlstatement); public boolean updatedbdata(st

38、ring updatet_sqlstatement);(3)再增加一个该接口的实现类,名称为daooperatordbbean作为本dao组件。(4)编程实现该dao组件以实现对数据库的各种操作package springwebapp;import java.sql.*;import javax.sql.*;public class daooperatordbbean implements daointerface datasource datasource=null; java.sql.connection con=null; public daooperatordbbean(datasou

39、rce newdatasource) datasource=newdatasource; try con = datasource.getconnection(); catch(sqlexception e) system.out.println("在daooperatordbbean方法中出现了sqlexception"); public daooperatordbbean() public resultset selectdbdata(string select_sqlstatement) resultset rs = null; try java.sql.prepar

40、edstatement pstmt = con.preparestatement(select_sqlstatement, resultset.type_scroll_sensitive,resultset.concur_updatable); rs = pstmt.executequery(); catch (sqlexception e) system.out.println("在查询数据库表时出现sqlexception错误!"); return rs; public boolean insertdbdata(string insert_sqlstatement) t

41、ry java.sql.preparedstatement pstmt = con.preparestatement(insert_sqlstatement, resultset.type_scroll_sensitive, resultset.concur_updatable); pstmt.executeupdate(); catch (sqlexception e) system.out.println("在增加数据库表的数据时出现错误!"); return true; public boolean deletedbdata(string delete_sqlstat

42、ement) try java.sql.preparedstatement pstmt = con.preparestatement(delete_sqlstatement, resultset.type_scroll_sensitive, resultset.concur_updatable); pstmt.executeupdate(); catch (sqlexception e) system.out.println("在删除数据库表的数据时出现错误!"); return true; public boolean updatedbdata(string update

43、t_sqlstatement) try java.sql.preparedstatement pstmt = con.preparestatement(updatet_sqlstatement, resultset.type_scroll_sensitive, resultset.concur_updatable); pstmt.executeupdate(); catch (sqlexception e) system.out.println("在修改数据库表的数据时出现错误!"); return true; 10、修改业务组件类userloginimpleweb以增加一

44、个 dao组件的属性成员package springwebapp;import java.sql.*;public class usermanagerimple implements usermanagerinterface daointerface daobeanid=null; public daointerface getdaobeanid() return daobeanid; public void setdaobeanid(daointerface daobeanid) this.daobeanid = daobeanid; public userloginimpleweb() p

45、ublic boolean douserlogin(userinfovo oneuserinfo) string username=oneuserinfo.getusername(); string userpassword=oneuserinfo.getuserpassword(); boolean okornot=false; string sqlstatement="select * from userinfo where username='"+username+"' and userpassword='"+userpas

46、sword +"'" resultset rs=daobeanid.selectdbdata(sqlstatement); try if (rs.next() okornot = true; else okornot = false; catch(sqlexception e) system.out.println("在douserlogin方法中出现了sqlexception"); return okornot; 11、修改*.xml配置文件以增加对前面的各个组件类的对象定义和datasource的定义<?xml version=&quo

47、t;1.0" encoding="utf-8"?><!doctype beans public "-/spring/dtd bean/en" "/dtd/spring-beans.dtd"><!- - application context definition for "springapp" dispatcherservlet. -> <beans> <bean id="usermanag

48、erimple" class="com.px1987.springwebapp.model.usermanagerimple" > <property name="daobeanid"> <ref bean="daooperatordbbean"></ref></property> </bean> <bean id="daooperatordbbean" class="springwebapp.daooperatordbbe

49、an"> <constructor-arg> <ref bean="datasource"/> </constructor-arg> </bean><bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <property name="driverclassname"> <value>com.

50、microsoft.jdbc.sqlserver.sqlserverdriver</value> </property> <property name="url"> <value>jdbc:microsoft:sqlserver:/localhost:1433;databasename=webstudydb</value> </property> <property name="username"> <value>sa</value> </p

51、roperty> <property name="password"> <value>1234</value> </property> </bean> </beans>12、在本项目中添加sql的jdbc驱动程序将在lib目录下,产生出13、执行该web应用(1)部署本web系统(2)保证sqlserver2000的服务器启动(3)添加jdbc驱动程序(4)再启动服务器(5)再对页面进行浏览以实际数据库表中的数据如admin和admin来登录将出现下面的登录成功的提示。如果输入错误的信息,将出现下

52、面的状态14、将前面的datasource的实现类改变为 apache的dbcp(1)修改前面的*.xml文件<?xml version="1.0" encoding="utf-8"?><!doctype beans public "-/spring/dtd bean/en" "/dtd/spring-beans.dtd"><!- - application context definition for "spring

53、app" dispatcherservlet. -><beans> <bean id="userloginimplebeanweb" class="springwebapp.userloginimpleweb"> <property name="daobeanid"> <ref bean="daooperatordbbean"></ref></property> </bean> <bean id="d

54、aooperatordbbean" class="springwebapp.daooperatordbbean"> <constructor-arg> <ref bean="datasource"/> </constructor-arg> </bean> <bean id="datasource" class="mons.dbcp.basicdatasource"> <property name="driverclassna

55、me"> <value>com.microsoft.jdbc.sqlserver.sqlserverdriver</value> </property> <property name="url"> <value>jdbc:microsoft:sqlserver:/localhost:1433;databasename=webstudydb</value> </property> <property name="username"> <va

56、lue>sa</value> </property> <property name="password"> <value>1234</value> </property> </bean> </beans>(2)在本 web系统中添加dbcp的驱动程序包(3)保证jdbc驱动程序的*.jar包文件也应该在本web系统的目录下15、再对本系统进行测试(1)部署(2)启动服务器(3)浏览本页面16、将该例改变为采用两个*.xml文件来配置(1)新建一个userlogin.xml(

57、2)将原来的配置文件改变为两个l springwebapplicationcontext.xml文件的内容<?xml version="1.0" encoding="utf-8"?><!doctype beans public "-/spring/dtd bean/en" "/dtd/spring-beans.dtd"><!- - application context definition for "springapp" dispatcherservlet. -> <beans> <bean id="daooperatordbbean" class="springwebapp.daooperatordbbean"> <constructor-arg> <ref bean="datasource"/> </constructor-arg> </bean><bean id="datasource" cl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论