黑马旅游网学习记录(五)

黑马旅游网学习记录(五)

今天学习为登陆界面的设计。还是分成三层进行设计:Servlet,Dao,Service。

后端:LoginServlet

//1、首先在doget中加上这样一句

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
//2、在dopost中进行这样设计
	//这里servlet的名字要注意。前端要和后端保持一致。
	//@WebServlet("/loginServlet"),这里写的是logServlet,这样在前端跳转的时候,就必须是这个名字。
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1、从前端抓取数据
        Map<String, String[]> parameterMap = request.getParameterMap();
        //2、封装user对象
        User user = new User();
        try {
            BeanUtils.populate(user,parameterMap);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

        //3、开始在service层进行判断
        UserService service = new UserServiceImpl();
        User u = service.login(user);
        ResultInfo resultInfo = new ResultInfo();
        if(u == null){
            //用户账号密码错误
            resultInfo.setFlag(false);
            resultInfo.setErrorMsg("账号或者密码输入错误");
        }
        //用户尚未激活的状态
        if(u != null && !u.getStatus().equals("Y")){
            resultInfo.setFlag(false);
            resultInfo.setErrorMsg("用户尚未激活,请激活后重新登陆");
        }
        if(u != null && u.getStatus().equals("Y")){
            resultInfo.setFlag(true);
            System.out.println(u.getStatus());
        }
        //响应数据,使用json数据进行封装。
        ObjectMapper objectMapper = new ObjectMapper();
        response.setContentType("application/json;charset=utf-8");
        objectMapper.writeValue(response.getOutputStream(),resultInfo);
    }

后端:UserServiceImpl

	//1、在接口中进行声明。这里不再赘述,可以在LoginServlet里面,写到service.login(user)的时候自动声明。
	//2、在实现类中进行重写。
	    @Override
    public User login(User user) {
        return userDao.FindByUserNameAndUserPassword(user.getUsername(),user.getPassword());
    }
	//在写到这里的时候,可以直接快捷键alt+enter自动在Dao接口中声明。

后端:UserDaoImpl

	//1、接口中的声明不再赘述。
	//2、UserDaoImpl中的方法实现
	    @Override
    public User FindByUserNameAndUserPassword(String username, String password) {
        User user = null;
        try {
            String sql = "select * from tab_user where username = ? and password = ?";
            user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username,password);
        }catch (Exception e){

        }
        return user;
    }

-------------------以上就是登陆界面的后端代码的书写----------------------

前端 login.html

	<script>
		$(function () {
			//1、给登陆按钮绑定事件
			$("#btn_sub").click(function () {	
			//2、发送ajax请求,提交表单数据			
			$.post("loginServlet",$("#loginForm").serialize(),function (data) {
			//3、处理响应结果
				if(data.flag){
					location.href="index.html";
					$("#errorMsg").html("登陆成功");
				}
				else{
					$("#errorMsg").html(data.errorMsg);
				}
				})
			})
		})
	</script>

姓名的正确显示

这个小东西也要分成前后端,以及后端三个模块来写。

前端 header.html

<script>
    $(function () {
        $.get("findUserServlet",{},function (data) {
            //data: id,name
            var msg = "欢迎回来," + data.name;
            $("#span_name").html(msg);

        });
    });
</script>

后端:FindUserServlet

后端只有这一个代码,没有dao和service层。

	//1、老规矩,现在doget里添上一句话
	    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
    //2、dopost
    //注意servlet的名字,和前端保持一致。
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1、从session中获取user对象
        Object user =  request.getSession().getAttribute("user");
        //2、将user写回客户端
        ObjectMapper objectMapper = new ObjectMapper();
        response.setContentType("application/json;charset=utf-8");
        objectMapper.writeValue(response.getOutputStream(),user);
        System.out.println(user);
    }

### 如何将苍穹外卖和黑马点评项目经验写入简历 在撰写简历中的IT项目经历部分时,应突出项目的规模、个人贡献以及所使用的技能和技术栈。以下是关于如何描述苍穹外卖和黑马点评这两个项目的经验: #### 苍穹外卖项目描述 作为独立开发者或假设团队的一员,在此项目中承担多个角色并完成了一系列重要任务。 - **项目概述** 开发了一款名为“苍穹外卖”的在线订餐平台[^1],支持用户浏览菜单、下单支付等功能,同时提供商家管理后台用于订单处理与商品维护。 - **具体职责** - 承担项目经理的角色,制定开发计划并监督执行情况以确保按时交付成果[^2]。 - 负责需求分析工作,通过模拟客户访谈收集必要信息来定义功能规格说明文档。 - 设计系统架构,选用Spring Boot框架构建微服务结构从而提高可扩展性和性能表现。 - 编码实现了核心业务逻辑模块,例如购物车结算流程及配送路径规划算法。 - 制定全面的单元测试方案并对发现的问题及时修复改进。 - 部署应用程序至云服务器上运行,并配置负载均衡器提升访问速度和服务稳定性。 #### 黑马点评项目描述 同样采用多岗位协作模式推进该社交评价类应用的研发进程。 - **项目简介** 构建了一个类似于大众点评的服务平台——黑马点评,允许注册会员发布评论分享体验心得给其他消费者参考决策依据。 - **主要成就** - 结合实际场景深入挖掘潜在价值主张,形成详尽的产品概念说明书指导后续环节开展活动。 - 协同视觉艺术家共同打磨交互细节直至达到预期审美标准为止。 - 实现个性化推荐引擎机制,基于机器学习模型预测偏好倾向进而推送相关内容资源。 - 整理归纳各类异常状况下的应对措施清单供后期查阅借鉴之用。 - 完善数据库表单关系图谱以便于长期存储管理和查询效率最大化目标达成一致意见之前反复讨论确认最佳实践方法论。 ```python # 示例代码片段展示技术能力 def calculate_delivery_time(order_details): """计算预计送达时间""" distance = order_details['distance'] speed = get_average_speed() # 获取平均运送速度 estimated_time = (distance / speed) * 60 # 将小时转换为分钟数 return round(estimated_time) def recommend_restaurants(user_preferences): """根据用户喜好推荐餐厅列表""" all_restaurants = fetch_all_restaurants() filtered_options = [] for restaurant in all_restaurants: match_score = compare_tastes(user_preferences, restaurant.menu_items) if match_score >= MIN_MATCH_THRESHOLD: filtered_options.append((restaurant.name, match_score)) sorted_recommendations = sort_by_score(filtered_options) top_picks = [item[0] for item in sorted_recommendations[:TOP_N]] return top_picks ``` 以上示例展示了编程技巧的一部分,有助于增强雇主对你技术水平的信任感。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值