【JavaWeb】使用JSP+Servlet+JavaBean构成的MVC模型,完成课程后台管理系统

使用JSP+Servlet+JavaBean构成的MVC模型,完成课程后台管理系统
主要功能:
1、登录功能
权限分为超级管理员和普通管理员。超级管理员用户名密码固定为zfy和123,普通管理员需由超级管理员进行添加和删除。
2、用户管理
此分类只能由超级管理员操作。普通管理员可以看到界面,但是点链接无权限。使用过滤器阻止普通管理员登录。
3、课程管理
课程添加(通过表单添加):内容包括课程id、课程名、方向、课程内容描述、时长,操作人的用户名(默认当前操作)
课程查询:列出所有课程信息

实现过程:
1、 InitServlet 实现Tomcat启动时候初始化,存放操作人员原计划使用map<操作人,Course>,但是一个操作人添加多条记录key相同会覆盖value,故改用List>

public void init() throws ServletException {
        //初始化manage类以及超级管理员对象
        System.out.println("init..........");
        List lists = new ArrayList<>();
        lists.add(new Manage("zfy","123","超级管理员"));
        System.out.println("添加超级管理员......");
        this.getServletContext().setAttribute("lists",lists);
        //初始化course类Map<操作人,course>
        // Map table存放表时由于操作人相同,value被覆盖,无法携带操作人信息
        List> table = new ArrayList<>();
        this.getServletContext().setAttribute("table",table);
        System.out.println("创建课程列表........");
    }
同时配置XML
    
        InitServlet
        com.zfy.manage.course.servlet.InitServlet
        1
    

    
        InitServlet
        /InitServlet
    

2、创建Course Manage类,Manage类中设置type表示当前是否超级管理员
3、LoginServlet接收index.jsp的参数校验登录,同时:一、boolean isSuper判断是否超级管理员登录,并设为全局变量,可实现后续过滤。二、判断登录时,由于会出现成功和不成功的不同转发,故第一次转发后加上return,否则会二次转发报错。三,设置Session的username会方便后续其他操作

 boolean isSuper = false;
        for(Manage m: lists){
            if(m.getUsername().equals(username) && m.getPassword().equals(password)){
                    //登录成功
                request.getSession().setAttribute("username",username);
                if (username.equals("zfy")){
                    isSuper = true;
                }
                request.getServletContext().setAttribute("flag",isSuper);
                response.sendRedirect("server.jsp");
                //没有return会执行for外的转发,报错
                return;
            }
        }
        request.getRequestDispatcher("/index.jsp").forward(request,response);

4、显示用户SelectUsers.jsp显示信息并可执行删除
【JavaWeb】使用JSP+Servlet+JavaBean构成的MVC模型,完成课程后台管理系统_第1张图片


				<%
					List lists = new ArrayList<>();
					lists = (List) request.getServletContext().getAttribute("lists");
					if(lists.size() != 0){
						for(Manage manage:lists){
				%>
					
<%--在超链接中传参给JSP要用	 --%>
						
				<%
						}
					}
				%>
			
用户名 密码 类型 操作
<%=manage.getUsername()%> <%=manage.getPassword()%> <%=manage.getType()%>删除

5、showCourse,jsp


			<%-- 中文乱码--%>
<%--				1、在本页面中	response.setContentType("text/html;charset=utf-8")不起作用--%>
<%--				2、分析应该是addCourse表单中提交的中文在Servlet中接收编码不一致,在AddCourseServlet--%>
<%--					request.setCharacterEncoding("UTF-8");解决!--%>

			<%
                List> table = (List>) request.getServletContext().getAttribute("table");
                for (int i = 0; i  courseMap = table.get(i);
					Iterator> entries = courseMap.entrySet().iterator() ;
					while(entries.hasNext()){
						Map.Entry map = entries.next();
			%>
					
						<%=map.getValue().getCourseId()%>
						<%=map.getValue().getCourseName()%>
						<%=map.getValue().getCourseOrient()%>
						<%=map.getValue().getCourseDescption()%>
						<%=map.getValue().getCourseTime()%>
						<%=map.getKey()%>
					
			<%
					}
				}
			%>
			

TIPS:
1、注意乱码:
request.setCharacterEncoding(“UTF-8”)只适用于post,等等
2、注意跳转地址:
request和response以及jsp不同,特别注意在jsp中url传参给Servlet
3、调试也可以设置控制台打印username等变量,看看是否截取到参数
4、有时候可能代码没问题,修改后通不过可能需要重启Tomcat,但是热部署无法通过

你可能感兴趣的:(JavaWeb)