计算机系云计算实验报告-期中报告

姓名:    魏增       学号: 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

wKiom1dXiyyzYwz8AA4YR3-Ydlk700.png-wh_50


 

调用 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=new loginBean();

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页面如图,只放了一个连接<a href=DisStudent.jsp>学生列表</a>

wKiom1dXi0-hB9LpAA0TXhYeQZQ635.png-wh_50


【】然后转到主页面(DisStudent.jsp)显示学生列表这里会判断session里的权限如果是学生(Role==1)只能显示自己的信息也只能做修改操作:如图

 wKiom1dXi3ryd5lnAAzO7MGWHU0159.png-wh_50

学生权限显示(DisStudent.jsp)列表代码:<% 

 if(Integer.parseInt(Role) == 1) {

  com.util.StudentBean stuBean = stuDAO.getSearchByname(name, password);

    //获得StudentBean的一个对象

%>

<TR>

<TD><%=stuBean.getId() %></TD>  

<TD><input type="text" value="<%=stuBean.getName() %>"/></TD>  

<TD><input type="text" value="<%=stuBean.getNumber() %> "/></TD>  

<TD><input type="text" value="<%=stuBean.getMajor() %>"/></TD>  

<TD><input type="text" value="<%=stuBean.getAge() %>"/></TD>

<TD><input type="text" value="<%=stuBean.getSex() %>"/></TD>

<TD><input type="text" value="<%=stuBean.getGender() %>"/></TD>

<TD><input type="text" value="<%=stuBean.getBirthday() %>"/></TD>

<TD><input type="password" value="<%=stuBean.getPassword()%>"/></TD>

<TD><a href="update.jsp?id=<%=stuBean.getId() %>">修改</a></TD>

        <% 

             if(Integer.parseInt(Role) == 1){

             out.print("<h1>你丫的权限不够,无法删除!!</h1>");

             }

           %> 

// 这里调用了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=new StudentBean();

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<com.util.StudentBean> list = stuDAO.getSearch();

for (com.util.StudentBean stuBean:list) {

    //获得StudentBean的一个对象

%>

<TR>

<TD><%=stuBean.getId() %></TD>  

<TD><input type="text" value="<%=stuBean.getName() %>"/></TD>  

<TD><input type="text" value="<%=stuBean.getNumber() %> "/></TD>  

<TD><input type="text" value="<%=stuBean.getMajor() %>"/></TD>  

<TD><input type="text" value="<%=stuBean.getAge() %>"/></TD>

<TD><input type="text" value="<%=stuBean.getSex() %>"/></TD>

<TD><input type="text" value="<%=stuBean.getGender() %>"/></TD>

<TD><input type="text" value="<%=stuBean.getBirthday() %>"/></TD>

<TD><input type="password" value="<%=stuBean.getPassword()%>"/></TD>

<TD><a href="update.jsp?id=<%=stuBean.getId() %>">修改</a></TD>

<TD><a href="servlet/Delete?id=<%=stuBean.getId()%>">删除</a></TD>

        <% 

           }

             if(Integer.parseInt(Role) == 1){

             out.print("<h1>你丫的权限不够,无法修改和删除!!</h1>");

             }

           %>

</TABLE> 

  <p style="topauto;rightauto;text-aligncenter;"><a href="AddStudent.jsp">添加学生</a></p>

<form style="topauto;rightauto;text-aligncenter;" action="SearchResulet.jsp">

       

    <p>学号:<input type="text" name="number"/></p>

    <p>姓名:<input type="text" name="studentName"/></p>

    <p>专业:<input type="text" name="major"/></p>

        <p><input type="submit" name="查询"/></p>

     <% }%>

</form> //如图:wKioL1dXjMaAuwJcAAw4xDXKQlg749.jpg-wh_50

 

这里调用了stuDAO.getSearch()方法返回一个学生(StudentBean)的列表代码为:String sql="select * from student";

ArrayList<StudentBean> list=new ArrayList<StudentBean>();

//获得prepareStatement对象

try {

pre=con.prepareStatement(sql);

rs=pre.executeQuery();

while(rs.next()){

StudentBean student=new StudentBean();

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表单显示出来、如图:wKioL1dXjOSj2cLeAA6PXVgRW0w098.png-wh_50

 

实现这个功能主要是在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;

int count=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然后在显示一下就可以了】<jsp:useBean id="stuDAO" class="com.dao.StudentDAO"/>

    <%

    if(Integer.parseInt(Role) == 1){

    com.util.StudentBean stuBean = stuDAO.getSearchById(request.getParameter("id"));

%>

    <form style="topauto;rightauto;text-aligncenter;" action="servlet/UpdateServlet">

    <p>学号:<input type="hidden" name="number" value="<%=stuBean.getNumber() %>"/><%=stuBean.getNumber() %></p>

    <p>姓名:<input type="hidden" name="studentName" value="<%=stuBean.getName() %>"/><%=stuBean.getName() %></p>

    <p>年龄:<input type="hidden" name="age" value="<%=stuBean.getAge() %>"/><%=stuBean.getAge() %></p>

    <p>性别:<input type="hidden" name="studentSex" value="<%=stuBean.getSex() %>"/><%=stuBean.getSex() %></p>

    <p>出生日期:<input type="text" name="studentBirthday" value="<%=stuBean.getBirthday() %>"/></p>

    <p>专业:<input type="hidden" name="major" value="<%=stuBean.getMajor() %>"/><%=stuBean.getMajor() %></p>

    <p>学年:<input type="hidden" name="Gender" value="<%=stuBean.getGender() %>"/><%=stuBean.getGender() %></p>

    <p>密码:<input type="password" name="password" value="<%=stuBean.getPassword()%>"/></p>

    <p>

        <input type="hidden" name="id" value="<%=stuBean.getId() %>"/>

    <input type="submit" value="确认修改"/>

    </p>

    <% }%>       //如图

wKiom1dXjFmCsPoKAA8wHKn5Ag0287.png-wh_50

 

好了下一个功能就是搜索查询了,稍微有点好玩展现放在DisStudent.jsp里面把姓名、学号、专业三个参数可以为空传到SearchResulet.jsp 页面 这里主要调用了stuDAO.getSearch(name, number, major)方法返回一个StudentBean 的列表再循环拿出来展现。(这个方法写的稍微有点意思!)

代码public ArrayList<StudentBean> 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[] = new String[3];

sql[0] = sql1;

sql[1] = sql2;

sql[2] = sql3;

ArrayList<StudentBean> list=new ArrayList<StudentBean>();

//获得prepareStatement对象

try {

for(int i=0;i<3;i++){

pre=con.prepareStatement(sql[i]);

rs=pre.executeQuery();

while(rs.next()){

StudentBean student=new StudentBean();

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个云逗,还是比较经济实惠的)。如图wKioL1dXjXzztGqNAAE21rIECm8716.png-wh_50

(2)第二步:进入刚才创建的引用左边有应用、代码管理、(当然这里我们选择上传war包,也可以用SVN在线管理代码,稍微有点复杂不做介绍了)、提示创建版本选择默认版本号为建好之后如图wKiom1dXjI6wgSblAAFFBSTV7BQ701.png-wh_50

 

(3)第三步:创建云端数据库建立数据表并实现Connection 连接代码更改>左边选择数据库与缓存服务选择共享型数据库初始化数库管理数据库(可能会提示输入安全密码、进入数据库管理界面选择SQL如图)>  wKiom1dXjJ2B3-xnAAD_rux0WtE341.png-wh_50

 

【数据库建表并插入数据】login 表:

create table login(

   name varchar(20) primary key,

   password char(8),

  role char(8)

);

//插入的数据:

insert into login values("aaa","aaa",0);

insert into login values("student","student",1);

insert into login values("teacher","teacher",2);

//student 表:

create table student(

  id int primary key auto_increment,

  name varchar(10),

  number varchar(10),

  major varchar(10),

  age int,

  sex varchar(10),

  Gender varchar(10),

  birthday varchar(10),

  password varchar(25)

);

//插入的数据

insert into student values(null,"大白菜", "6102213869", "航天班", 18, "男", "大三", "1994-08-09","wei1126shazi");

insert into student values(null,"student", "6102213871", "航天班", 18, "女", "大三", "1994-08-09","student");

insert into student values(null,"teacher", "6102213871", "航天班", 18, "女", "大三", "1994-08-09","teacher");

【借下来的一步很重要】返回到上一个页面可以看到新浪云数据库的地址、端口、数据库名称、用户名、密码、如图wKioL1dXjbmxg-p8AAGX6VyqzkI412.png-wh_50

 

接下来用上述信息去修改项目里connection 连接语句如图wKioL1dXjcmTyoCGAAIv_qg1GRM152.png-wh_50

 

【好了最后一步打war】在项目名称上右键> export> war file > next > 选择一个目录命名war包时要跟新浪云的应用名一样(然而之前我并没有这样命名却可以成功部署访问),接下来到 新浪云端的代码管理在应用后边 选择上传war包。等待刷新一下,就可以成功访问了,如图://看地址就知道是成功了,哈哈!

wKiom1dXjNnSgdUDAAy9zK1MlLM782.png-wh_50

 

总结和感想