1、课程实验报告课程名称 JSP 开发技术 班级 软件 132 实验日期 2016.5.23姓名 孙玉东 学号 201307217 实验成绩实验名称 实验 3 简易选课系统实验目的及要求学习使用 Myeclipse 开发 Web 项目,综合使用 JavaBean、Servlet 、Cookie和 Session。实验环境Tomcat7.0.myeclipse2013实验内容编写一个 Java Web项目,实现依据 Cookie自动登录,登录后可以进行课程的简单选课和退课。在第一次登录页面时,需要输入用户名和密码,并可选择一周内不用登录。第二次时可以直接显示欢迎界面。开始选课后,会列出所有备选课程,
2、之后有添加和删除的超链接,点击对应的超链接可以实现课程的添加与删除。算法描述及实验步骤1、 创建的项目名称为 LessionSelectionProj2、 将附件中给的 welcome.jsp,login.jsp 添加到项目中的合适位置,阅读调试修改其中的代码, 依据给的 CookieLoginServlet.java 创建CookieLoginServlet,阅读调试修改其中的代码,以上三个文件实现 cookie 保留登录信息的功能。实现后如下:a)首此在 IE 地址栏中输入:http:/localhost:8080/LessionSelectionProj/welcome.jsp,出现界面
3、b) 输入用户名 2222(由于 Cookie 限制,用户名只能是英文与数字) ,密码任意(为简便起见 CookieLoginServlet 并不对用户密码进行判断),选择“一周之内不用登录”后,点击登录按钮,显示:c) 关闭 IE 浏览器,重新打开地址http:/localhost:8080/LessionSelectionProj/welcome.jsp,直接出现以上界面,不再需要登录。d)查看一下 IE 生成的 cookie 文件的内容,位置在:XP: C:/Documents and Settings/用户名/Cookies/WIN7: C:Users用户名AppDataRoaming
4、MicrosoftWindowsCookiesLow3、 创建 JavaBean, beans.CoursesData,包含三个字段:字符串courseId,courseName 和 HashMap 类型的 courseData,以及对应的 get/set 方法 ,courseData 中存放以下数据:4、 创建 Servlet ShowCourse.java 点击上图的开始选课链接,显示:5、 创建添加课程的 Servlet: AddCourse.Java,点击某个课程(如JSP 程序设计)后面的添加链接,则显示:多选几门课,显示:6、 如果选择已经选过的课,则会显示如下界面:7、 创建删除
5、课程的 Servlet:DeleteCourse.Java,点击某个课程(如JSP 程序设计)后面的删除链接,则显示:调试过程及实验结果1.登录界面2.欢迎界面3.选课界面4.添加课程5.删除课程总结通过这次实验重新复习了对 Cookie 以及 Session 的使用 对于利用cookie 保存用户信息,第一次使用的时候觉得有点不习惯 ,但在做出了这个实验之后,就感到熟练了许多了。附录1. 登录界面代码用户名:密码:一周之内不用登录2. 欢迎界面代码欢迎$cookie.name.value 访问我们的简易登录系统开始选课3. 选课界面代码$sessionScope.name ,$request
6、Scope.message $sessionScope.name 请选择你要选修的课程:$course.value 添加删除$sessionScope.name 你已经选择了下面的课程:$course.value public class CookieLoginServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException request.setCharacterEncoding(
7、“UTF-8“) ;response.setContentType(“text/html;charset=UTF-8“) ;String name=request.getParameter(“username“);String password=request.getParameter(“userpwd“);/ 记住用户String remember = request.getParameter(“remember“);if(“on“.equals(remember)/向客户端发送 CookieCookie c = new Cookie(“user“,name) ;/设置 Cookie 的存活
8、时间(只要设置了存活时间,那么此 Cookie就将存储到客户端的硬盘上,不会在缓存中存储)c.setMaxAge(Integer.MAX_VALUE) ;/设置浏览器携带 Cookie 的路径c.setPath(“/“) ;/设置路径如果是/,那就意味着你访问服务器上的任意工程资源都会携带此 Cookie/c.setPath(“/“) ; /设置路径是服务器的根路径 协议 + 主机名 + 端口号/发送到客户端response.addCookie(c) ;request.getSession().setAttribute(“username“, name);response.sendRedire
9、ct(“welcome.jsp“);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doGet(request, response);增加private List courses;Map selected;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOExcept
10、ion request.setCharacterEncoding(“UTF-8“) ;response.setContentType(“text/html;charset=UTF-8“);String name=request.getParameter(“name“);String id=request.getParameter(“id“);int courseid=Integer.valueOf(id);System.out.println(“id“+courseid);courses=new ArrayList();for(int i=0;i) request.getSession().g
11、etAttribute(“selected“);if(selected=null)selected =new HashMap();for (String key : selected.keySet() if(key.equals(id)System.out.println(“存在“ );flag=true;if(flag)System.out.println(“存在 1“);elseselected.put(id, courses.get(courseid-1).getCoursedata().get(id);System.out.println(courses.get(courseid-1)
12、.getCoursedata().get(id);request.getSession().setAttribute(“selected“, selected);request.setAttribute(“name“, name);request.getRequestDispatcher(“ShowCourse.jsp“).forward(request, response);删除List selectedCouser;Map selected;public void doGet(HttpServletRequest request, HttpServletResponse response)
13、throws ServletException, IOException request.setCharacterEncoding(“UTF-8“) ;response.setContentType(“text/html;charset=UTF-8“);String id=request.getParameter(“id“);int courseid=Integer.valueOf(id);String name=request.getParameter(“name“);List courses=new ArrayList();for(int i=0;i) request.getSession
14、().getAttribute(“selected“);if(selected=null)selected =new HashMap();selected.remove(id);request.getSession().setAttribute(“selected“, selected);request.setAttribute(“name“, name);request.setAttribute(“selectcourse“, selectedCouser);request.getRequestDispatcher(“ShowCourse.jsp“).forward(request, res
15、ponse);显示代码throws ServletException, IOException request.setCharacterEncoding(“UTF-8“) ;response.setContentType(“text/html;charset=UTF-8“);String name=request.getParameter(“name“);List courses=new ArrayList();for(int i=0;i5;i+)CourseData c=new CourseData();c.setCourseId(String.valueOf(i+1);c.setCours
16、eName(c.getCoursedata().get(i+1+“);courses.add(c);/ System.out.println(c.toString();request.setAttribute(“courses“, courses);for(CourseData c:courses)System.out.println(c.toString();request.setAttribute(“name“, name);System.out.println(name);/ request.getRequestDispatcher(“ShowCourse.jsp“);/ response.sendRedirect(“ShowCourse.jsp“);request.getRequestDispatcher(“ShowCourse.jsp“).forward(request, response);