# Experiment1 **Repository Path**: mysingleroom/Experiment1 ## Basic Information - **Project Name**: Experiment1 - **Description**: No description available - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-04-13 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 《JAVA EE企业级架构》课程实验报告 院(系)名称:网络空间安全学院 专业班级: 17软卓1班 学号: 201741404127 姓名: 黄鑫杰 实验题目: 实验1 Servlet编程 实验日期:2019.4.13 实验(上机)学时: 2 成绩: ## 一、实验内容、要求 *实现一个用户注册/登录模块,大致功能如下: >1.启动首页为登录页 2.如果用户还没有用户名和密码,则请他/她先进行注册,注册信息写入一个文本文件中,注册成功后直接回到登录页 3 登录成功后则提示XXX登录成功 4 登录不成功则提示究竟是用户名不存在还是密码错误 5 其它你想到的情况,请多参看别的软件的登录页 > ## 二、所采用的Java EE技术规范 1. JSP的基础语法 2. Filter配置 3. Serlet配置 4. HttpClient组件 ## 三、实验的主要模块及其功能 ### login.jsp 利用session负责界面的登陆以及登出,若已登录,则显示登出按钮,以及登陆的用户信息,反之则相反 ### loginFilter3.java 利用userName,token的session判定登陆状态,若无登陆则重定向到莞工登陆界面 ### loginFilter2.java 利用getParameter验证获取的token,state,若无则再重定向获取token ### loginServlet.java *利用httpClient组件去执行post请求获取对应所需要的信息,类似如下 > HttpPost httpPost = new HttpPost("https://cas.dgut.edu.cn/ssoapi/v2/checkToken"+ "?" +param); // 设置ContentType(注:如果只是传普通参数的话,ContentType不一定非要用application/json) httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf8"); // 响应模型 CloseableHttpResponse res = null; res = httpClient.execute(httpPost); HttpEntity entity2 = res.getEntity(); > 若获取不到便利用执行post请求直到获取到对应的实体,并解析 并将最后获取的用户信息json字符串存到map结构中,再赋予到userName的session中,如下 > //{"username":"201741404127","name":"黄鑫杰","faculty":200,"wx_openid":"o7n4SxOSQr-f1TnqgOSADP4KFksQ", // "group":"Student","faculty_title":"计算机与网络安全学院","openid":"20b72e27fc8c2f07dd0509d04b08c7e6"} Map map = new HashMap(); map.put("学号",MessageDTO.getUsername()); map.put("姓名",MessageDTO.getName()); map.put("wx_openid",MessageDTO.getWx_openid()); map.put("分组",MessageDTO.getGroup()); map.put("学院",MessageDTO.getFaculty_title()); map.put("openid",MessageDTO.getOpenid()); //HttpSession session = request.getSession(true); session.setAttribute("userName", map); > ### loginoutServlet.java 清除key为userName,token的session,并重定向到login.jsp ## 四、程序运行时的输入数据/输出结果 ![过程图1](https://images.gitee.com/uploads/images/2019/0413/201730_ff5914ff_4839826.png "1.png") ![过程图2](https://images.gitee.com/uploads/images/2019/0413/202202_46fbdefa_4839826.png "2.png") ![过程图3](https://images.gitee.com/uploads/images/2019/0413/202224_be0a84d5_4839826.png "3.png") ## 五,实验流程图 ![流程图](https://images.gitee.com/uploads/images/2019/0416/195844_e60ab414_4839826.png "4.1.png")