第一个JavaWeb项目体验

从四月初到五月十五,一直在忙一个JavaWeb项目。昨天交了主办方规定要交的文档和视频之后,比赛算是暂时告一段落了。身体累其实也不算什么,主要心很累。想写的冲动并不太强烈,只是觉得总该总结一下,过几天估计还得继续忙这个破事,到时候又没时间了,所以还是跑到图书馆带上耳机开始好好总结一下。技术上的,感悟上的都有。

当时决定参加这个浙江省服务外包大赛的时候其实是信心满满的,还一副有十足把握的样子鼓励队友要自信。结果刚起步不久就被一个SSH框架给卡死。技术不成熟是一方面的原因,毕竟这个学期才开WEB课,而且基本自学。但是程序员不就是讲究一个快速的自学能力吗,自己花了一个多星期,还不能搞懂该如何套着框架写代码,当时是各种自责和心急如焚。越急,越不能静下心来看书或者教学视频。不知道怎么把握团队的方向,只知道到图书馆一摞一摞的书借过来,这本翻一翻那本看一看,感觉都用不上,烦,急,崩溃。

幸好队伍里面另外一名队友找到突破口了,确定采用SSH2框架,并且能够教其他队友按照那个模式码代码。现在我会坦承是“幸好”,当时的我并不这么想呀。20岁的小伙子,平时就是争强好胜很多方面都不愿输给谁的一个人。当时感觉自己那么拼命的花了那么多时间和精力为什么我搞不出来,为什么。队友弄出来的时候我却想逃,想自己也马上去弄一个出来,至少把原理搞懂不要只按照他说的填代码。可是越这么想我发现自己越痛苦而且越弄不出来。那段时间经常给老姐打电话讲起这个比赛的事,讲起自己不是队伍的一把手怎么怎么不太开心。姐说她整个大学参加过的各种活动各种社团各种比赛中,她通常都是当二把手的,辅助队伍的核心。数学建模国赛美赛均是一等奖,创新立项两个,自己带的编辑部也是充当二把手,现在也保研到复旦金融系了。她还讲团队竞赛的意义不是要在队内竞争证明我比谁强,我偏不听谁的,我偏要当核心,而是要去证明我们这个团队比别的队伍强比别的队伍好比别的队伍更懂团结。这些道理平时要让我说我也会说,但是真的碰上问题了,我还是难改好斗的本性。但好在,我还是强按住了自己的本性,一脸歉意的找那个队友帮我讲解了一下SSH2的跳转映射流程,框架这个坎就算这样迈过去了,我也算调整好心态,当奶妈打辅助。

之后在一个留言板功能模块,涉及到写入数据库,但是写入之后发现乱码了。没什么经验,所以就百度,百度上主要提供的一个信息就是可能是MySql的统一编码方式没有设好,我用命令行检查了一下:

发现没问题啊,清一色UTF-8。后来又看到说MySql的编码方式要设置到数据表的字段一级。然后我就把留言那张表的字段一个个的检查了一遍,依然全部是utf-8.之后是各种坑爹的关于配置文件可能出错的说法,要去C盘找my.ini配置文件然后在里面再改编码方式,按照这个东西弄下去我终于成功的把MySql服务弄的不能开启了,OK。绝望的边缘以为要重装MySql了,不过好在胡乱的又把配置文件根据记忆给改了回来,MySql服务正常开启。也是从这里开始事情好像发生转机,我决定根据参数的传递路径来查一下到底是不是数据库编码乱码。没想到直接在Action中将JSP页面传过来的参数打印一下就出现乱码。尼玛问题范围瞬间缩小了。

?





1

System.out.println(Message.getReply());

打印出来是这样的:

于是又去百度,说这种从JSP传到Action中就乱码的问题可以通过写一个过滤器放在web.xml里面,我百度了一段代码放进去,重启Tomcat,依然不行。又在无意中发现,据说这是struts2-core-2.1.6.jar的一个bug,建议使用struts2-core-2.1.8.jar。尼玛我打开工程的Web
App
Library文件夹一看果然使用的是struts2-core-2.1.6.jar。正准备换2.1.8试试,又发现某位好心人说有一种简单的解决方式,就是对传过来的字符串先解码,再编码,最后再保存到数据库,代码如下:

1 Message msg=messageService.findByid(Message.getId());  //通过ID找到某条留言。
2 String s1=new String(Message.getReply().getBytes("ISO8859_1"), "UTF8");
//接收从jsp传过来的留言回复字段的值,按照ISO8859_1标准解码,再按照UTF-8标准重新编码,生成新的字符串s1.

3 msg.setReply(s1); //将msg的回复字段值设为s1.
4 messageService.update(msg); //更新msg。

按照他说的做了,真的成功了,好开心!

乱码的问题解决了,感觉心情好一点了,毕竟困扰了两三天。然后信心回来一点了,于是决定再静下心来把一直想解决的分页查看功能实现一下。还是以留言为例,要实现分页,可以在数据库中取的时候就分页,即为真分页。也可以把数据全部取出来,存在LIST对象中,在JSP页面控制显示,即为假分页。之前在很多诸如《javaweb典型模块与项目实战》等参考书中看到过分页功能的实现,可能是因为采用的框架不同,又或者是我心浮气躁,反正就是感觉用那些书上的代码套不到我们的项目中来,分页始终实现不出来。那天烦躁的不行,一怒之下甩开各种书啊视频什么的,自己写了一个假分页。原理很简单,但是算是自己的原创,不算抄代码,感觉倍儿爽。下面代码奉上:


 1  <%
2 List<MessageView> list = (List) request.getAttribute("messagelist"); //取得Action中查出来存起来的留言LIST
3 int begin = 0; //begin代表该页从第几条留言开始显示,初始化为0
4 if (request.getParameter("begin") == null) {
5 begin = 0;
6 } else {
7 begin = Integer.parseInt(request.getParameter("begin"));
8 }
9 %>
10 <% for (int i = begin; i < (((begin + 4)<list.size())?(begin+4):list.size()); i++) {
11 %>//这里4代表每页显示的留言条数,可以自己设置。循环的判断中用到三目预算,主要是针对最后一页,如果最后一页数据少于4条然而依然使用和其他页一样的遍历方式就会报错空指针。
12 留言内容: <%=list.get(i).getContent()%>
13 ...
14 <%}%>
15
16 //下面的代码通过简单的逻辑判断来控制是否显示上一页和下一页的超链接,不做详细解释了,相信能看懂。
其中的超链接跳转的地址是本页面,但是传的参数begin会变化,页面也是根据取到的begin参数来决定从哪一条记录开始显示的。

17 <%if(begin>=4) {%>
18 <a href="messageQuery?begin=<%=begin -4%>">上一页</a>&nbsp;&nbsp;
19 <%}
20 if(begin<=(list.size()-4)){ %>
21 <a href="messageQuery?begin=<%=begin + 4%>">下一页</a>
22 <%} else{%>
23 已到最后一页
24 <%} %><br>

虽然很简陋,估计以后也不能用在正规的项目中,但只是想说有些问题如果参看别人的方法感觉搞不出来的话,自己尝试撸一下,说不定就撸出来了。

好,分页功能实现。转去实现一个订单功能。队友在建数据库的时候很专业的把订单表的表名取为Order,是吧,订单用英语翻译过去就是Order啊!可是尼玛就是这个破Order表坑了我三天,信心和耐心都几乎被磨灭殆尽。其实实现下订单的功能和其他功能一样呀,都是对一张表实现增删改查操作。但是每次一点确定预定,就报错,说

could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query

刚开始百度说可能是字段名和MySql关键字冲突了,将信将疑的在这张Order表的所有字段名的前面全部加了"my_"前缀,再跑。还是could not
execute query、could not execute
insert;等等等等。烦死了,找另一个队友说,你来写一遍,不要看我的代码,看看是不是我哪个地方没注意,字段名尼玛都这样了怎么会冲突了,肯定是有其他原因。结果那妹子写了一遍,报了同样的错误,我不知道该说什么了。正当念着Order,Order我草你丫的时候,脑袋转过来了,Order!Order!!!尼玛自己经常用
Order by id desc
语句来实现对查询结果的倒序排列,这个时候没注意,肯定是Order与MySQL关键字冲突了。于是简单粗暴的把这张破Order表的表名改成了Dingdan.
D-ing订,D-an单,多好记啊!多好用啊!马上各种query啊,insert啊,delete啊再也不报错了。三天的阴影解除,Fuck.

还有遇到过一些小问题,大多解决的比较快,这里就不多说了。初赛的作品要刻到光盘上,因为有个破缓存文件捣乱,昨天刻坏了7张盘才成功。队友一起写的60多页的文档用彩纸印刷出来真是高大上,尽管作品本身技术含量不算高,但是毕竟都尽力了。

第一篇半随笔半技术博客,希望自己以后能学到更多可以拿出来分享的东西。周末愉快。

第一个JavaWeb项目体验

时间: 2024-08-03 18:41:40

第一个JavaWeb项目体验的相关文章

(转)一个JavaWeb项目开发总结

原文地址:http://www.cnblogs.com/lzb1096101803/p/4907775.html 一.学会如何读一个JavaWeb项目源代码 步骤:表结构->web.xml->mvc->db->spring ioc->log->代码 先了解项目数据库的表结构,这个方面是最容易忘记的,有时候我们只顾着看每一个方法是怎么进行的,却没有去了解数据库之间的主外键关联.其实如果先了解数据库表结构,再去看一个方法的实现会更加容易. 然后需要过一遍web.xml,知道

怎用不用工具创建一个javaWeb项目

整体步骤是: 1: 新建一个文件夹:  以项目名称命名 2:在新建的文件夹下再新建一个文件夹 WEB-INF  (注意:大小写) 和 一个文件  index.jsp : index.jsp里面的代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ page language="java" contentTyp

eclipse下使用maven新建一个javaweb项目

最近也不知道是什么情况,一直处于停止不前的状态,被websocket折磨的几乎崩溃,总的来说还是自己的基础不好,所以还是要一步一个脚印才行,然后准备把所有的基础东西都进行总结发布一下 1.新建maven project 2.直接点击next 3.选择web,然后点击next 4.填入GroupId和Artifact Id,然后点击finish即可 这样这个javaweb项目就建好了,如果发现还存在错误,可采取一下步骤进行配置 1)出现如下的错误,是由于缺少了一个jar包:javax-servle

用STS和Maven的方式创建一个JavaWeb项目

一.创建项目 1.Eclipse中用Maven创建项目,选maven-archetype-webapp,如下图: 创建好项目后,目录如下: 至此,项目已经创建完毕,下边是配置.关键所在!!! 二.项目配置 1.添加Source Folder Maven规定,必须创建以下几个Source Folder src/main/resources src/main/java src/test/resources src/test/java 添加以上的Source Folder Maven3路程(三)用Ma

(一)新建一个javaweb项目

一.为了不影响其他项目,可以重新选择一个新的工作目录:swith workspace 二.为了尽可能统一项目,所使用的编程环境,包括:Tomcat.JRE都是项目组自己的,所以在新建项目的时候要注意选择以下几个: 1.不用myeclipse自带的jre环境 2.此处的JRE是myeclipse自带的,需要删掉,重新添加 添加方式为:Add libraries——>JRE System libraries——> 3.添加tomact版本: 此时,libraries中还没有添加tomcat,还需要

编写一个JavaWeb项目

基本流程:JSP文件显示页面,在前端页面输入赋值,使用form或href超链接传值到Servlet中方法,在Servlet方法中调用Dao层的类对象,将数据传到数据库中,并实现对数据库里的数据的增删改查,完成后将值重新返回到JSP输出操作结果数据. 共分为五个包和对应的JSP文件: 1.Util包:建立连接数据库的方法,以及关闭操作数据库的方法. package Util; import java.sql.Connection; import java.sql.DriverManager; im

如何了解一个Web项目

一:学会如何读一个JavaWeb项目源代码 步骤:表结构->web.xml->mvc->db->spring ioc->log->代码 1.先了解项目数据库的表结构,这个方面是最容易忘记的,有时候我们只顾着看每一个方法是怎么进行的,却没有去了解数据库之间的主外键关联.其实如果先了解数据库表结构,再去看一个方法的实现会更加容易. 2.然后需要过一遍web.xml,知道项目中用到了什么拦截器,监听器,过滤器,拥有哪些配置文件.如果是拦截器,一般负责过滤请求,进行AOP等:如

如何在开发时部署和运行前后端分离的JavaWeb项目

在开发中大型的JavaEE项目时,前后端分离的框架逐渐成为业界的主流,传统的单机部署前后端在同一个项目中的工程项目越来越少.这类JavaWeb项目的后端通常都采用微服务的架构,后端会被分解为诸多个小项目,然后使用dubbo+zookeeper或者springCloud来构建微服务,前端则会是一个单独的项目,前台的请求通过微服务来调用.但是,不同与传统的web项目,这类前后端分离的项目如何在开发中部署和运行呢? 当前后端分离时,后端项目一定会被加载到tomcat的webapp目录下面,但是前端的资

一键解决从Myeclipse工程打包JavaWeb项目到服务器的Tomcat,并自动部署

项目组用Myeclipse开发一个JavaWeb项目,每天都要发布新版本到测试服务器的Tomcat.每次都要先导出WAR包,然后上传到服务器指定目录,接着远程登录到服务器上停止Tomcat,删除Tomcat的日志文件.临时文件,webapps下的老的WAR包,然后拷贝新的WAR包至webapps,接着再重启Tomcat.每天都干这个事觉得很繁琐,所以写了一套批处理,每天发布时只要双击一个bat文件,就全自动搞定上述过程! cd C:UsersfhWorkspaces"MyEclipse 9&qu