大二下学期小学期实践我组按要求完成了网站的基本前后台搭建和数据库调用,并增添了部分新功能。
必要功能:
1.检验已有帐号,登录功能
2.新闻信息的浏览
3.管理员对新闻的增删改查
4.分页功能
5.数据比对
附加功能:
1.公证申请
1.DAO
public void addNews(String title,String contents ,String author,int types,int istop,String pic){
try{
con=MySqlDB.getConnection();
String sql="insert into news (title,contents,author,types,sort,rate,istop,pic,pubdate) values(?,?,?,?,?,?,?,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, title);
pstmt.setString(2, contents);
pstmt.setString(3, author);
pstmt.setInt(4, types);
pstmt.setInt(5, 1);
pstmt.setInt(6, 0);
pstmt.setInt(7, istop);
pstmt.setString(8, pic);
pstmt.setString(9, "2015-3-3");
pstmt.execute();
}catch (Exception e){
e.printStackTrace();
}
}
在编写插入一条新的记录的数据库语言时,需要将所有的属性全部添加上,当中不能有缺少否则无法插入成功,并且带有AUTO_INCREMENT的属性不能手动指定数据,不可用占位符指定,也不能用固定值指定,否则同样出错。
2.DB
public static Connection getConnection(){
Connection con=null;
try {
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/gzc","root","shou");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
获取数据库连接时,要确认地址、用户名和密码是否和数据库中的数值相同,在更换数据库后应更新此处数据。
3.Servlet
dao.addNews(request.getParameter("title"),
request.getParameter("contents"),
request.getParameter("author"),
Integer.parseInt( request.getParameter("type")),
Integer.parseInt( request.getParameter("istop")),
request.getParameter("pic"));
response.sendRedirect(request.getContextPath()+"/admin/main.jsp");
将数据从上一层传递至下一层时,要确保获取时由上一层送出的数据是否正确地传递给当前层,并确保下层路径是否正确,尤其需要注意上层数据是否已正确传输,多数情况下错误发生的原因都是数据无法正确传输,有时同样需要检查上层的数据在更上层是否传输正确。
4.前端
<jsp:useBean id="teamDao" class="com.shou.dao.TeamDao"></jsp:useBean>
<jsp:useBean id="newsDao" class="com.shou.dao.NewsDao"></jsp:useBean>
<%request.setAttribute("teamList", teamDao.findTeamByNum(5)) ; %>
<%request.setAttribute("newsList5", newsDao.findNewsByType(5)); %>
<%request.setAttribute("newsList4", newsDao.findNewsByType(4)); %>
<%request.setAttribute("newsList3", newsDao.findNewsByType(3)); %>
<%request.setAttribute("newsList2", newsDao.findNewsByType(2)); %>
<%request.setAttribute("newsList1", newsDao.findNewsByType(1)); %>
数据获取要注意类和函数以及参数是否是所需要的那个,
<c:forEach items="${requestScope.newsList1}" var="news" begin="0" end="2">
<li style="text-align: left;"><img src="img/item1.gif" /> ${news.contents }</li><br />
</c:forEach>
不然无法获得想要的数据。
5.后端
<%String id=request.getParameter("id");
News news=newDao.findNewsById(Integer.parseInt(id));
request.setAttribute("news", news);%>
这部分最重要的就是数据的传输,如果需要将上一层的数据传递给下一层,需要在当前层获取上一层的数据,并赋值给一个新的变量,再由下一层获取这个变量,才能到达传输的目的,如果没有中间的这个变量,数据无法正确传输,数据是无法越层的。
暑假学习内容总结
1.蔡佳
2.杨阳
3.宁婷
4.范智宇
暑假主要学习了unity3d的UGUI和5.0以上的物理引擎系统。
UGUI是unity3d4.6版本以后所新增的一个制作UI界面的方法,代替了原本的GUI方法,原本的GUI方法个人感觉所需代码量太多了,特别不好使,现在所使用的UGUI方法真的是方便了很多,只需要对所需控件需要干嘛添加代码就可以了,而在制作控件外观方面就不用了。
新建的控件untiy3d会自动帮你创造一个canvas画布和一个eventsystem并将控件放入画布中。在下图中可以清晰地看到由四个蓝色圆点所围成的方框就是canvas画布,控件运行时都在画布中。
在对控件添加代码以使其具有一定的效果时,需要在最开始添加两个相关的命名空间,一个是using UnityEngine.UI; 以及 using UnityEngine.Events;这样就可以开始添加代码了。
下面是做的一个简易的装备系统案例:
物理引擎系统在unity3d 5.0 以上的版本中改进还是蛮大的,效果好了很多,物理组件分为physics和physics2d两个部分,分别对应3D 和2D物体,里面的组件大多以关节的形式存在,当然还有些其他的,比如cloth布料。
下面这张图就是给地面添加cloth组件后所形成的效果图,布料下面防止了一个一个球体以方便调试,观察。Ps:这是有摩擦力的。
在物理引擎中用到关节是碰到过一个问题,就是给一个物体施加弹力后,当它再次弹起是却没有摊到初始位置而是会越弹越高。
可以看见,真的是越来越高。目前还不知道解决办法。
目前,关于UGUI 和物理引擎的学习暂告一段落了,现在正在学习昼夜系统,对自己的目标是能独立开发出一些有一定难度的demo。
5.赵纤尘