基于java的购物网站毕业论文定稿版.docx

上传人:暗伤 文档编号:88520082 上传时间:2023-04-26 格式:DOCX 页数:26 大小:255.38KB
返回 下载 相关 举报
基于java的购物网站毕业论文定稿版.docx_第1页
第1页 / 共26页
基于java的购物网站毕业论文定稿版.docx_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《基于java的购物网站毕业论文定稿版.docx》由会员分享,可在线阅读,更多相关《基于java的购物网站毕业论文定稿版.docx(26页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、基于 j a v a 的购物网站毕业论文精编 W O R D 版1 引言自从 B2C 购物出现在人们的视野中,电子商务就在全世界范围内受到了格外的关注,并且得到了快速的发展。从现实角度来看,目前购物网站的普遍用户是购买者难以自己想要购买的商品甚至用户在耗费很大的精力和时间后即使找到了自己想要的产品,最后却由于其他原因而放弃购买。很多报道指出,推销商们普遍对目前的网络行销感到失望,尽管如此,电子商务无疑是目前最好的在线商品展示的媒体和工具。然而,网上产品展示的目的不仅仅是展示产品,而更重要的是通过让客户更多地了解产品而提高产品的购买率。因此,购物网站目前所面临的最大挑战之一就是网站的设计,如何使

2、得网页能够有效地展示自己的产品,同时方便用户的使用, 使用户以愉悦的心情选购称心如意的商品。本系统的目的和意义就是应上述挑战而尝试为用户提供一个操作简单方便的网上交易系统。利用本系统,用户可以自由地浏览商品,注册成为网站会员,选择商品加入自己的购物车,而后生成订单,实现网上购物。2 系统应用的关键技术2.1 EXTJS MVC 的介绍fields: name:id,type:int,srotable:true, name:text,type:string,srotable:true其中name代表字段名称,type为字段类型,类型只有string、float、int、boolean、date、

3、auto(默认值, 意味着无convert方法)6种对应后台pojo,形成一条数据,而stroe层则是数据集合,也就是model的集合。开发时我们经常是用代理的方式从后台获取一条json数据,形成stroe,如proxy: type:ajax,url:./category/combo_category.do,reader:type:json, root:rows,writer:type:json是用 ajax 的代理方式从后台获取一个数据集,stroe 还得指定你使用的 model 是那个,model 配置项就可以指定你要指定的 Model 类,用字符串的形式写上类名即可配置好 stroe.这

4、时候搭建主面板视图,主面板是一个 border 布局,上方是 login 信息以及系统名称,左边属性图,中部是数据表格以及一些表单。完成的 mvc 架构还需要 controller层,这时候我们要先建立一个 app.js,内容如下:Ext.onReady(function()/开启提示功能/动态加载js文件enabled : true);Ext.application(name : core,/名称appFolder : ./core,/所在的目录launch:function()layout : fit, border : 0, items : xtype : mainviewlayout)

5、;,););我们用一个 Viewport 搭建系统主界面,其中 items 中放入的 mainviewlayout 就是系统主视图的别名,通过这种方式可以直接加载 mianviewlayout 类到页面,Cthis.addFunItem=function(funInfo)if(funInfo)var mainView=funInfo.mainView;var funPanel=mainView.down(funInfo.funViewXtype); if(!funPanel)funPanel=Ext.create(funInfo.funViewName); mainView.add(funPa

6、nel);mainView.setActiveTab(funPanel);elsemainView.setActiveTab(funPanel);,传入funInfo是一个js对象,用来加载不同views,models,stores,实现点击左侧树形图, 加载不同的数据表格表单树形等不同的数据展示效果.2.2 数据表格的形成ExtJS中的数据表格中的每一条数据对应的都是Model,所有记录则是一个数据集合, 所以数据表格中我们肯定要配置的有stroe对象,为了形成数据表格中可以形成复选框多选的效果我们需要加入的配置项有selModel:selType:checkboxmodel,multiSe

7、lect:true,使用的是复选形式的选择模式,数据表格必不可少有colums,也就是列模式,规范我们接收store数据形成表格的展现形式如:columns:text:商品名称,dataIndex:name,width:100,text表示的每列展示的名字,dataIndex则是需要展示的字段,一般我们在生成一个数据表格的时候我们都会在表格头上加几个按钮,用来管理数据表格的增删改,这个功能实现只要用tbr里面放几个按钮,分别给上他们响应的rel属性,方便我们在控制器中查找,实现控制功能,常见的数据表格还会有分页展示,以及搜索框,bbar:xtype:pagingtoolbar, dock:bo

8、ttom, displayInfo:truebbar中放入的就是一个分页的组件,他也需要一个数据集合stroe,dock表示地定位的位置,而搜索框我们一般用一个触发器组件来形成,做一个前台的过滤效果即可。如-,按名称查询:,xtype: triggerfield,triggerCls: Ext.baseCSSPrefix + form-search-trigger, listeners:change:function(_this,_new,_old,_opt) var_store.clearFilter(false);_store.filter(name,_new); , onTriggerC

9、lick: function() var _store = this_store.clearFilter(false);_store.filter(name,this.getValue();,这样简单的搜索功能我们就可以实现了。2.3 树的形成定义一个类继承于.本系统的主界面的树形使用的是本地树,不同过后台生成,直接前台固定数据,生成的固定的树结构,树同样需要数据就有store的配置以及树的items配置主要配置的就是树的各个节点,本系统每一个小菜单就是一颗树,通过前面定义的加入新的视图和控制器的方法来加载不同的页面都需要传入树的节点信 息。2.4 数据库的连接本系统数据库的连接使用的MyBa

10、tis框架的数据连接,用配置文件配置数据库连接属性,本次我没有使用外部属性文件,而是直接使用配置的固定参数,先配置一个数据源dataSource,让他直接指向类url为jdbc:mysqlL.localhost:3306/lzl?characterEcoding=utf-8&useUnicode=true 在配置数据库访问账号密码,这样我们就和数据库连接上了。2.5 系统的运行环境本系统前端使用 mvc 模式的 ExtJS4.1 后台使用 springmvc,spring,mybatis 整合,使用的服务器是 tomcat7.0,在 eclipse 编译器下运行即可,操做系统Windo

11、ws7,在火狐浏览器下进行测试.2.6 springmvc 工作流程1. 用户向服务器发送请求,请求被 Spring 前端控制 Servelt DispatcherServlet 捕获;2. DispatcherServlet 对请求URL 进行解析,得到请求资源标识符(URI)。然后根据该 URI,调用 HandlerMapping 获得该 Handler 配置的所有相关的对象(包括 Handler 对象以及 Handler 对象对应的拦截器),最后以 HandlerExecutionChain 对象的形式返回;3. DispatcherServlet 根据获得的Handler,选择一个合适

12、的 HandlerAdapter。(附注: 如果成功获得 HandlerAdapter 后,此时将开始执行拦截器的 preHandler(.)方法)4. 提取 Request 中的模型数据,填充Handler 入参,开始执行 Handler(Controller)。在填充 Handler 的入参过程中,根据你的配置,Spring 将帮你做一些额外的工作:HttpMessageConveter: 将请求消息(如 Json、xml 等数据)转换成一个对象,将对象转换为指定的响应信息数据转换:对请求消息进行数据转换。如 String 转换成 Integer、Double 等数据根式化:对请求消息进行

13、数据格式化。 如将字符串转换成格式化数字或格式化日期等数据验证: 验证数据的有效性(长度、格式等),验证结果存储到 BindingResult 或Error 中5. Handler 执行完成后,向DispatcherServlet 返回一个 ModelAndView 对象;6. 根据返回的 ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring 容器中的 ViewResolver)返回给 DispatcherServlet;7. ViewResolver 结合 Model 和 View,来渲染视图8. 将渲染结果返回给客户端。2.7 spring 依赖注

14、入,控制反转IoC,即控制反转。他使程序组件或类之间尽量形成一种松耦合结构,开发者在使用类的实例之前,需要先创建对象的实例。但是 IoC 将创建实例的任务交给 IoC 容器,这样开发应用代码时只需要直接使用类的实例,这就是 IoC。通常用一个好莱坞原则(请不要打电话给我,我会打电话给你。)来比喻这种控制反转的关系。依赖注入有 3 种类型注入,spring 支持 2 种,setter 注入和构造器注入,在项目中我使用的是注解方式的注入,在配置文件中配置了 com.lzl 包下的类自动注入到容器中,在我们需要用到这些类的时候,我们只需声明该类,然后使用一个autowired 注入想要使用的类,其中

15、控制器我们使用的 Controller 注解标识为控制器,业务逻辑层我们使用的 service 注解。这样spring 容器就能管理好我们的类。2.8 spring AOP3 系统需求分析和总体设计3.1 系统功能需求在本系统中用户管理、购物车管理、订单管理、产品展示,商品管理,广告管理六个模块。分为前台展示项目和后台管理项目。(1)购物车管理:实现添加商品、取消一个商品、数量修改、清空购物车功能。(2)订单管理:实现提交订单、删除订单、查询订单、订单审核功能。(3)前台展示:实现产品列表、产品明细功能。(4)用户管理:实现用户注册、用户信息修改、用户删除、用户查询功能。(5)商品管理: 实现

16、对商品的添加,对商品信息的修改,对商品的删除。以及按类别查询商品,按名称查询商品功能。(6) 广告管理: 对主页面广告部分的管理,实现广告的动态化,页面广告信息的更新。3.2 系统角色及其功能分析3.2.1 系统中有 3 个角色:(1)注册用户(2)管理员(3)游客3.2.2 系统角色的功能(1)普通用户网站的普通浏览者(即游客),可以浏览商品和添加本地购物车。(2)注册用户普通浏览者只要注册为网站用户后,登录成功后有以下功能:登录,登出,向购物车中添加商品,查看个人信息,生成并提交订单。添加或修改个人明细资料。(3)管理员登录成功后,进入后台项目,对前台展示的动态管理,以及用户商品等管理,对

17、订单的审核。3.3 总体设计思想概述本系统是基于 B/S 架构下的多层结构应用系统。B/S(Browser/Server)结构即浏览器和服务器结构。它是随着 Internet 技术的兴起,对 C/S 结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过 WWW 浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层 3-tier 结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。推荐的分层式结构一般分

18、为三层,从下至上分别为:数据访问(dao)层、业务逻辑层、表示层总的来说,采用分层结构的设计思想,可以让每个层由一组相关的类或组件构成,共同完成特定的功能。层与层之间存在自上而下的依赖关系,上层组件会依赖下层组件的 API,而下层组件则不依赖于上层组件。例如:表述层依赖于业务逻辑层,而业务逻辑层依赖于数据库层。并且每个层对对上层公开 API,但具体的实现细节对外透明。当某一层发生变化,只要 API 不变,不会影响其他层的实现。在本系统中,使用开源的 mysql 数据库,持久层用到spring 所集成的 mybatis 技术,业务逻辑层用普通 javabean 实现,表述层运用基于springm

19、vc 的 MVC 设计模式(springmvc 用来做 C 层,spring 实现 V 层与C 层的解耦以及 C 层与M 层的解耦)。3.4 数据库设计图 3-1 数据库 E-R下面列出了设计过程中所用到的数据库表及其结构:表 3-1 lzl_quser 前台用户表列名类型长度允许空值描述idint11不允许主键usernamevarchar255不允许用户名passwordvarchar255不允许密码emailvarchar255允许邮箱地址qqvarchar255允许qq 号码phonevarchar255允许电话号码sexvarchar255允许性别xlvarchar255允许学历ah

20、varchar255允许爱好jjvarchar255允许简介表 3-2 lzl_user 管理用户表列名类型长度允许空值描述idvarchar11不允许主键usernamevarchar255不允许用户名passwordvarchar255不允许密码sexint11允许性别phonevarchar155允许电话号码qqvarchar255允许qqaddrvarchar255允许地址emailvarchar255允许邮箱地址表 3-3 lzl_product 商品表列名类型长度允许空值描述idint11不允许主键namevarchar255允许商品名descvarchar255允许描述norma

21、_Pricedouble11允许社会价格member_Pricedouble11允许本店价格pdatetimestamp0允许上货日期category_idint11允许所属类型photovarchar255不允许图片地址表 3-4 lzl_cartItem 购物车表列名类型长度允许空值描述idint11不允许主键product_idint11不允许商品 idproduct_namevarchar255允许商品名称countint11允许商品数量pricedouble11允许商品单价quser_idint11不允许用户 idstateint11允许当前状态imagepathvarchar255

22、允许商品图片3.5 系统的类设计3.5.1 DAO 类设计通过这个 mybatis 获取对应的DAO,然后使用 DAO 进行数据库操作,每个 dao 对应一个 Mapper 配置文件,进行 Sql 的配置,在本系统中,dao 的一般使用都使用了BaseProvice 类,根据约定实体用param(“entity”)标识,分页参数用param(“pageNum”)和param(“pageSize”)标识,这样就能友好的被读取,按照约定还有实体中的其他对象属性要用ObjectAlt 注解标志,集合用ArrayAlt 标志,这样的标识都可以方便我们更好的识别其属性到底是个什么类型,其次做条件查询时,

23、 是用 entity 标识的实体中有不为空的属性且不为空字符串时就会被 and 连接,保存也是实体中不为空的属性都会进行保存,主键必须为空,数据库进行主键的自动增长3.5.2 JacksonUtil 类设计本类中实现了一个 mapToJson 方法,参数为一个Object 的对象。返回值为一个String 类型的 json 对象,本类可以将对象或者集合传化为 JSON 格式的字符串,用的是 JackSon Jar 包。3.5.3 ObjectAlt 注解类设计用Target(ElementType.FIELD)标识表示可以使用在属性上,在使用Retention(RetentionPolicy.

24、RUNTIME) 在运行时检测,最后方法中声明一个 String value(),本类用来标识实体类中的对象属性。3.6 系统的用例图浏览商添加购物车修改删除Custome订单操注册登录修改信图 3-2 总体用例分析 1商品角色Admin广告用户图 3-3 总体用例分析 2如图 3-3,用户管理、购物车管理、订单管理、产品展示,广告管理,商品管理 6 个模块构成了本 b2c 购物网站系统。User 是指系统用户,包括注册用户和匿名用户两种,匿名用户只可以浏览商品,匿名用户通过用户管理模块注册后就可以使用购物车和下订单。展示用户Admin用户登录信息修改添加新用户图 3-4 用户管理用例如图 3

25、-4,用户管理模块主要包括:用户登陆、用户注册、用户信息修改、用户删除、用户信息查询五个功能组成。用户购物车管清空购物车图 3-5 购物车管理用例取消一个商商品数量修订单查询管理员订单管订单审核修改订如图 3-5,购物车管理模块主要包括:添加商品、取消一个商品、数量修改、清空购物车四个功能组成。图 3-6 订单管理用例如图 3-6,订单管理模块主要包括:订单提交、删除订单、订单明细三个功能组成。4.系统结构设计图 4-1 系统前台功能设计图 4-2 系统后台功能设计图 4-3 系统总体功能设计图 4-4 个别功能设计5 系统的详细设计5.1 BaseProvice 类这个类重要是复用型的后台动

26、态 SQL 语句的生成,在 dao 层使用selectkey 注解指定type 为 BaseProvice.class,method 为指定的方法,5.1.1 isString 方法该方法返回值为一个 String ,参数为 Field field,Map map,String sql 三个,通过 field.getType().toString().contains(String),判断出这个属性为string 属性,然后在判断这个属性不为空的字符,这时候我就进行了模糊查询 and 连接方式的拼接,用传入的 sql 参数的 concat 方法拼接“and”+StringUtil.String

27、toCoulm(field.getName(),在拼接 like Concat (%,#entity,加上 field 的 getName 方法拼接属性名称上去, StringUtil.StringtoCoulm 方法是将属性格式化为字段的方法,如 mebmerPrice 就会格式化成 mebmer_price,最后返回 sql 即可。5.1.2 isObject 方法该方法返回值为一个String ,参数为 Field field,Map map,String sql 三个,通过 field 的 getAnnotation(ObjectAlt.class)方法不为空的话我们就通过field.

28、get(map.get(entity),得到一个 Object 的对象,通过 Object 对象的getClss().getDeclaredFields(),得到属性的数组,循环遍历属性数组,循环中先设置私有属性可访问,然后通过 fields1j.get(obj),得到这个属性,判断这个属性如果是id 的话在进行拼接 sql=sql.concat( AND+StringUtil.StringtoCoulm(fields1j.getName()+ =# entity.+field.getName()+.+fields1j.getName()+);就可以将外键属性的id 进行拼接进入,最后返回 s

29、ql 即可。首先我们在 BaseProvice 类下建立一个名为 findOne 返回值为 String 值参数为一个 map 的方法,其次通过 map.get(entity).getClass()得到一个map 中param(“entity”)注解标识为实体的 Class 对象,然后我们声明一个 String 类型的字符串,初始化为”select * from ”,通过 concat 方法用刚刚得到的 Class 对象的 getSimpleName()方法得到类名, 约定好 lzl_+类名就为数据库表名,这时候就得到了 Select * from 表名 ,最后我们在通过concat 方法拼接

30、 where id=#entity.id,返回字符串sql。5.1.4 通过条件查找对象集合先声明一个名为 findList 返回值为 String 参数为 Mapmap 的方法,通过map.get(“entity”)得到param(“entity”)注解标识为实体的Class 对象,声明一个String 类型的字符串,初始化为 select * from,通过 concat 方法拼接lzl_+clazz.getSimpleName()+ WHERE 1=1,得到的sql 为 select * from 表名 where 1=1,这时候我们调用 Class 对象的 getDeclaredFie

31、lds()方法得到属性的数组 fields,对属性数组进行遍历,在循环开头我们需要设置可以访问私有属性,这句代码就是设置访问私有属性,fieldsi.setAccessinble(true),然后进行判断这个属性在实体中是否为空 fieldsi.get(map.get(entity)!=null,不为空的时候我们对属性的类型进行判断,这时候我们就要用得 isString,isInteger ,isObject 方法,最后返回sql。这个方法中我们只需要调用上放的 findList 方法,最后我们将 sqlConcat 方法拼接 limit #pageNum,#pageSize,最后返回 sql

32、。5.1.6 带条件的查询数据总数这个方法我们也是先调用 findList 方法得到所有的记录,然后通过 sql 的 replace方法将*替换为 count(*),返回 sql 即可。5.1.7 增加一条记录的方法声明一个名为 save 返回值为 String 参数为 map 的方法,首先我们通过map.get(entity).getClass()得到对象的Class 对象,声明二个 String 字符串,一个为sql 初始化为 insert into,sql1 初始化为 values (;给 sql 字符串拼接上表名,通过sql.concat(lzl_+clazz.getSimpleNam

33、e()+ ( ),用class 对象的 getDeclaredFields()得到所有的属性,遍历属性数组,设置可以访问私有属性,通过fieldsi.getAnnotation(ObjectAlt.class)!=null 时,对sql 进行sql=sql.concat(StringUtil.StringtoCoulm(fieldsi.getName()+_id ,);对sql1 进行sql1=sql1.concat( #entity.+fieldsi.getName()+.id,);然后 continue 出去,在判断if(fieldsi.getAnnotation(ArrayAlt.cla

34、ss)!=null),在continue 出去,在判断该属性是否是id 属性,是的话sql=sql.concat(StringUtil.StringtoCoulm(fieldsi.getName()+,);sql1=sql1.concat( # entity.+fieldsi.getName()+,);最后将 sql 的最后一个,替换为 )sql.substring(0, sql.lastIndexOf(,).concat() );sql1 的最后一个,替换为)sql1=sql1.substring(0, sql1.lastIndexOf(,).concat();最后返回 sql.concat

35、(sql1)就得到了增加语句5.1.8 根据 id 修改的方法5.1.9 根据对象修改的方法声明一个名为 update 返回值为 String 参数为 map 的方法,声明 2 个字符串分别为 sql 和 where 初始化为“update” 和“where id=#entity.id”,通过map.get(entity).getClass()得到class 对象声明为clazz,给sql 拼接表名并加上set 字符串,通过 clazz.getDeclareFields()得到所有的属性,设置可以访问私有属性,判断是否为 id 属性是的话不拼接,在判断是否是对象,通过fieldsi.getAn

36、notation(ObjectAlt.class)!=null 判断是对象,是对象的话给 sql 拼接sql=sql.concat(StringUtil.StringtoCoulm(fieldsi.getName()+_id = #entity.+fieldsi.getName()+.id);在 continue 出去,在通过fieldsi.get( map.get(entity)!=null 判断当前属性值不为空,在拼接以下语句sql=sql.concat(StringUtil.StringtoCoulm(fieldsi.getName()+=# entity.+fieldsi.getNam

37、e()+,);最后去除掉字符串的最后一个字符sql=sql.substring(0,sql.length()-1);返回 sql.concat(where)即可5.1.9 根据 id 删除的方法声明一个名为 remove 返回值为 String 参数为 map ,先声明一个 sql 的字符串,初始化为 delete from,通过 map.get(entity).getClass()得到 Class 对象,然后拼接 lzl_+clazz.getSimpleName() where id=#id,最后返回 sql 即可5.2 主要模块的设计说明与界面用户管理模块主要包括用户注册,登录,退出、删除

38、、修改图 5-1 未记住密码以及未自动登录状态图 5-2 记住密码状态图 5-3 自动登录的状态图 5-4 用户管理页面图 5-5 用户增加 1图 5-6 用户增加 2图 5-7 用户增加 3图 5-8 用户信息修改图 5-9 搜索过滤5.2.2 前台系统展示模块图 5-10 游客用户展示页面图 5-11 登录页面图 5-12 登录成功后图 5-13 购物车5.3 系统的测试测试是软件开发的重要组成部分,每一个开发人员都应该养成良好的生活习惯的测试,通过不断地测试和维护,完成提高系统它是。显着性检验如下:(1) 测试并不仅仅是为了找到错误,通过分析发生的错误发生的原因和趋,可以帮助项目经理找到

39、当前软件开发过程中的缺陷,以便及时改进;(2) 分析可以帮助测试人员提高效率和测试的有效针对性;(3) 错误被发现,也是有价值的,完整的测试是评估软件质量的方法。(4) 测试可以使系统更加完善,减少不必要的时间来再看一遍同一个地方.测试一般有两种方法:如果你已经知道产品应该具有的功能,可以通过测试来验证每一个功能都可以正常使用;如果知道在工作过程内的产品,可以进行测试,以检查是否该产品在按照说明书的正常运转。有 2 个测试方法,一个黑箱测试,一个叫白箱测试。对于这个系统,我采取第一种方法,黑匣子。对完成的模块,测试以查看功能模块有没有达到所需的。模块测试和集成测试后,系统实现了所有的功能规范,

40、达到了预期的要求。6 结束语网站开发是一项复杂而艰巨的任务,需要广泛的知识。通过设计的网上交易系统,让我接触到的基于 Web 的知识 Java Web 开发语言的许多方面,包括支持 MVC 架构的 Springmvc 框架、HTML 语言,CSS 层叠样式表, 客户端开发语言 JavaScript 中,MVC 分层架构中,开源的 Tomcat 服务器,MySQL 数据库,服务器端开发语言 JSP,等等,这些语言(或技术)扩大了我的知识,我在做自己的基本特征,应用方向的理解和实际应用的过程一般理解如何使用它们将被整合,以发展一个漂亮的界面和强大的 Web 站点。通过这个动手了系统的设计,我是系统

41、开发的全过程,从我熟悉的 B / S 结构的Web 应用软件的设计思想和整个过程的发展更深刻的认识。首先,系统需要分析,分析系统来实现什么功能,系统应分成几个模块来设计系统的特定的功能应是如何实现的;经过分析,认为它涉及到计算机专业知识,优良的技术问题,大问题变成小问题,然后逐个解决。毕业开始,因为我们没有在软件架构设计经验,所以在规范的业务流程和软件工程的发展作出了非常错误的,所以后来在组装过程变得非常困难。设计收获:1掌握了网站开发的基本流程,设计整个网站的功能模块图;2掌握了如何搭建和配置一个 Tomcat 服务器;3掌握了使用 JSP 编程,实现对信息的显示、修改、删除和添加等;遇到的

42、问题:1. JSP 中文乱码问题的解决对于 JSP 中文乱码问题的处理,常用的方法有两种:一种方法是在 JSP 页面上设置页面的“contentType”属性。这种方法就是在页面开始时,设置页面的“contentType”属性,例如:另一种方法是输出中文信息时使用“ISO 8859-1”编码。这种方法是在输出中文信息之前,对中文信息进行一次“ISO 8859-1”编码。2. 异常一般是对一个为 NULL 值的变量进行操作引起的。为了避免这种异常,最好在对变量操作之前检查看它是否为 NULL参考文献1胡书敏.Servlet 与 JSP 核心编程2杨卫兵,王伟.JAVA Web 编程详解 .东南大

43、学出版社3张伟.JAVA 程序设计详解.东南大学出版社4 刘京华.Java Web 整合开发.清华大学出版社5 贺松平基于 MVC 模式的 B/S 架构的研究及应用武汉:华中科技大学.2006 年6 萨师煊. 王珊.数据库系统概论. 高等教育出版社,2002 年 2 月致谢本次毕业设计的最终完成离不开很多人的大力协助。衷心的感谢上海达内科技有限公司在我实习期间交给我这个项目任务,使我有了设计课题,还感谢在实习期间给我帮助的项目经理以及公司同事。真诚的感谢本次毕业设计的指导老师-宋玲教授,给了我自由选题的机会,在我的论文审稿阶段指出了很多方面的不足,并一一给出修改意见,对我进行悉心指导,对我的毕业论文最终完成给予了极大的支持和帮助。最后,再一次感谢所有帮助过我的人们!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com