计算机系云计算实验报告-期中报告
姓名:魏增学号:6102213869专业班级:航天131班
实验名称:云计算课期中考试
实验目的:1、掌握如何把Web程序部署到任意一个公共云平台。
2、熟悉利用云平台的数据库。
3、学习微信API的开发。
问题描述:在本地编译好带有数据库的java Web程序后,将该程序部署到任意一个公共的云平台上,利用云平台提供的数据库,之后在利用微信开发API去读取部署到云平台上的java Web程序。
实验要求:1、需要提交设计报告打印稿和电子稿
2、提交时间:本学期15周
实验内容:(1)选取任意一个“Web程序设计实验”,将实现的Java Web程序部署到任意一个公共云平台。
(2)【选做】选取带有后台数据库的Web程序
(3)【选选做】利用微信(公众号)开发API,读取公共云平台中的Web程序
操作步骤:
【第一步】选做web实验三本地测试:
实验内容:
本实验使用MVC实现学生信息管理系统的基本功能。在MVC模式中,倡导控制、模型(逻辑)和视图分离,在JSP开发的系统中,Servlet用于控制系统的运行流程,JavaBean用于业务逻辑处理、数据传输和数据持久化,而JSP用于显示系统的处理结果。相应的软件结构也分为4层:表现层、控制层、逻辑层和持久层,另有数据传输层在各层之间传递数据。
1、实现学生信息的修改和删除操作;
2、实现学生信息的查询操作,可以指定学号、姓名、专业等,也可以查询所有学生;
3、实现学生修改自己信息的功能,但只能修改本人信息(禁止修改他人信息),且只能修改“出生日期”和“密码”,其他信息禁止修改(只能由管理员(教师)修改)。
提示:在登录LoginServlet中修改代码,将查到的Role对象的roleId属性也保存在session中,点击“修改本人信息”链接时,直接从session获取roleId(对应用户的ID)查到该记录,然后进行修改。
4、实现教师信息的录入、查询、修改和删除操作。
具体过程:【项目已经上传到附件里了没有图片(太大了)可运行,使用前请仔细阅读(试用前必读.txt)】
//** 不知道怎么开头写这个报告有两个作用交老师的报告,还要写个博客作为记录,为后面的学弟学妹做帮助。所以不知道写简单点还是复杂点。注:因为还要放到博客上所以内容也是比较狂野,表现作者个性,请读者不要介意。
1、登录 (先来个漂亮的首页)这个界面很简单不做介绍,数据提交到LoginServlet
调用login = loginDao.getSearchByname(username, password);判断是否为空!LoginServlet代码只给出重要部分/*String sql="select * from login where name=? and password=?";
loginBean login=null;
try{
pre=con.prepareStatement(sql);
pre.setString(1, name);
pre.setString(2,password);
rs=pre.executeQuery();
if(rs.next()){
login=newloginBean();
login.setName(rs.getString("name"));
login.setPassword(rs.getString("password"));
login.setRole(rs.getByte("role"));
}
*/ //这样登录就做完了登录成功就会设置session参数为request.getSession().setAttribute("username", username);
request.getSession().setAttribute("password", password);
request.getSession().setAttribute("roleName", login.getRole());//然后跳转到Main.jsp页面如图,只放了一个连接学生列表
【】然后转到主页面(DisStudent.jsp)显示学生列表这里会判断session里的权限如果是学生(Role==1)只能显示自己的信息也只能做修改操作:如图
学生权限显示(DisStudent.jsp)列表代码:
if(Integer.parseInt(Role) == 1) {
com.util.StudentBean stuBean = stuDAO.getSearchByname(name, password);
//获得StudentBean的一个对象
%>
"/>"/>"/>"/>"/>"/>"/>"/>">修改if(Integer.parseInt(Role) == 1){
out.print("
你丫的权限不够,无法删除!!
");}
%>
// 这里调用了stuDAO.getSearchByname(name, password);方法封装在StudentDAO.java里面还是只给出部分重要代码String sql="select * from student where name=? and password=?";
StudentBean student=null;
try{
pre=con.prepareStatement(sql);
pre.setString(1, name);
pre.setString(2,password);
rs=pre.executeQuery();
if(rs.next()){
student=newStudentBean();
student.setAge(rs.getInt("age"));
student.setBirthday(rs.getString("birthday"));
student.setGender(rs.getString("Gender"));
student.setId(rs.getString("id"));
student.setMajor(rs.getString("major"));
student.setName(rs.getString("name"));
student.setNumber(rs.getString("number"));
student.setSex(rs.getString("sex"));
student.setPassword(rs.getString("password"));
}
***如果是教师(Role==0 || Role==2)就可以查看所有学生列表并且可以随意修改删除并实现查询功能(DisStudent.jsp)代码为:if(Integer.parseInt(Role) == 2 || Integer.parseInt(Role) == 0) {
java.util.List list = stuDAO.getSearch();
for(com.util.StudentBean stuBean:list) {
//获得StudentBean的一个对象
%>
"/>"/>"/>"/>"/>"/>"/>"/>">修改">删除}
if(Integer.parseInt(Role) == 1){
out.print("
你丫的权限不够,无法修改和删除!!
");}
%>
添加学生
学号:
姓名:
专业:
//如图:
这里调用了stuDAO.getSearch()方法返回一个学生(StudentBean)的列表代码为:Stringsql="select * from student";
ArrayList list=newArrayList();
//获得prepareStatement对象
try{
pre=con.prepareStatement(sql);
rs=pre.executeQuery();
while(rs.next()){
StudentBean student=newStudentBean();
student.setAge(rs.getInt("age"));
student.setBirthday(rs.getString("birthday"));
student.setGender(rs.getString("Gender"));
student.setId(rs.getString("id"));
student.setMajor(rs.getString("major"));
student.setName(rs.getString("name"));
student.setNumber(rs.getString("number"));
student.setSex(rs.getString("sex"));
student.setPassword(rs.getString("password"));
list.add(student);
}
【】然后下一个版本就是怎样实现修改和删除的功能了,因为删除比较简单,就不在粘贴源代码了,重点介绍如何修改:当点击修改连接是跳转到Update.jsp 页面并且把要修改的id传过去,然后在Update.jsp页面通过id找到数据库里的数据并用form表单显示出来、如图:
实现这个功能主要是在jsp页面上调用了一个方法stuDAO.getSearchById(request.getParameter("id"))展现出来就可以了,这个方法也是封装在StudentDAO.java里面。//讲到这里相信这个方法也不用给出代码了,根据前面的类似方法就能够写的出来了。
【】展现出来之后就是修改内容点击提交把参数提交到UpdateServlet然后在把接收到的参数封装到一个StudentBean中
调用=StudentDAO.getUpdate(student,request.getParameter("id"))方法
方法具体代码为:String sql="update student set name=?,number=?,major=?,age=?,sex=?,Gender=?,birthday=?,password=? where id="+ id;
intcount=0;
try{
pre=con.prepareStatement(sql);
pre.setString(1,student.getName());
pre.setString(2,student.getNumber());
pre.setString(3,student.getMajor());
pre.setInt(4,student.getAge());
pre.setString(5,student.getSex());
pre.setString(6,student.getGender());
pre.setString(7,student.getBirthday());
pre.setString(8,student.getPassword());
count=pre.executeUpdate();
}
当数据库的数据通过上面的代码修改之后直接跳转到显示学生列表(DisStudent.jsp)页面拿出修改后的数据就可以了。
【注:上述修改那个功能显示时如果是学生(判断Role==1)登录的就只显示修改生日和密码、展现实现代码如下、这里主要是通过把其他的属性type设置成”hidden”然后在显示一下就可以了】
if(Integer.parseInt(Role) == 1){
com.util.StudentBean stuBean = stuDAO.getSearchById(request.getParameter("id"));
%>
学号:"/>
姓名:"/>
年龄:"/>
性别:"/>
出生日期:"/>
专业:"/>
学年:"/>
密码:"/>
"/>
//如图
【好了下一个功能就是搜索查询了,稍微有点好玩】展现放在DisStudent.jsp里面把姓名、学号、专业三个参数可以为空传到SearchResulet.jsp页面这里主要调用了stuDAO.getSearch(name, number, major)方法返回一个StudentBean 的列表再循环拿出来展现。(这个方法写的稍微有点意思!)
代码:publicArrayList getSearch(String name,String number,String major){
String sql1="select * from student where name="+"\""+ name +"\"";
String sql2="select * from student where number="+"\""+ number +"\"";
String sql3="select * from student where major="+"\""+ major +"\"";
String sql[] =newString[3];
sql[0] = sql1;
sql[1] = sql2;
sql[2] = sql3;
ArrayList list=newArrayList();
//获得prepareStatement对象
try{
for(inti=0;i<3;i++){
pre=con.prepareStatement(sql[i]);
rs=pre.executeQuery();
while(rs.next()){
StudentBean student=newStudentBean();
student.setAge(rs.getInt("age"));
student.setBirthday(rs.getString("birthday"));
student.setGender(rs.getString("Gender"));
student.setId(rs.getString("id"));
student.setMajor(rs.getString("major"));
student.setName(rs.getString("name"));
student.setNumber(rs.getString("number"));
student.setSex(rs.getString("sex"));
list.add(student);
}
}
【至此应该算是本地功能可实现了】
【第二步】将项目部署到新浪云平台:(当然在这之前我已经有过经验了)
(1)进入新浪云点击云应用SAE、进入控制台、创建应用设一个二级域名然后下面选A型 JVM数量选一个,确定创建就可以了(会提示每小时耗费5个云逗,还是比较经济实惠的)。如图
(2)第二步:进入刚才创建的引用左边有应用、代码管理、(当然这里我们选择上传war包,也可以用SVN在线管理代码,稍微有点复杂不做介绍了)、提示创建版本选择默认版本号为1建好之后如图
(3)第三步:创建云端数据库建立数据表并实现Connection连接代码更改>左边选择数据库与缓存服务选择共享型数据库>初始化数库>管理数据库(可能会提示输入安全密码、进入数据库管理界面选择SQL如图)>
【数据库建表并插入数据】login表:
createtablelogin(
namevarchar(20)primarykey,
passwordchar(8),
rolechar(8)
);
//插入的数据:
insert into login values("aaa","aaa",0);
insertintologinvalues("student","student",1);
insertintologinvalues("teacher","teacher",2);
//student 表:
createtablestudent(
idintprimarykeyauto_increment,
namevarchar(10),
numbervarchar(10),
majorvarchar(10),
ageint,
sexvarchar(10),
Gendervarchar(10),
birthdayvarchar(10),
passwordvarchar(25)
);
//插入的数据
insertintostudentvalues(null,"大白菜", "6102213869", "航天班", 18, "男", "大三", "1994-08-09","wei1126shazi");
insertintostudentvalues(null,"student", "6102213871", "航天班", 18, "女", "大三", "1994-08-09","student");
insertintostudentvalues(null,"teacher", "6102213871", "航天班", 18, "女", "大三", "1994-08-09","teacher");
【借下来的一步很重要】返回到上一个页面可以看到新浪云数据库的地址、端口、数据库名称、用户名、密码、如图
接下来用上述信息去修改项目里connection 连接语句如图
【好了最后一步打war包】在项目名称上右键> export> 选war file > next >选择一个目录命名war包时要跟新浪云的应用名一样(然而之前我并没有这样命名却可以成功部署访问),接下来到 新浪云端的代码管理在应用后边 选择上传war包。等待刷新一下,就可以成功访问了,如图://看地址就知道是成功了,哈哈!
总结和感想: