记账本开发记录——第十二天(2020.1.30)

今天,学习了HTTP协议的相关内容和Servlet的运行原理。HTTP协议,全称叫做超文本传输协议,是一种网络协议,用来定义WEB浏览器与WEB服务器之间交换数据的过程。

在HTTP协议中,分为HTTP请求和HTTP响应(request和response)在HTTP请求中,根据请求方式的不同,内容也有所不同。对于get请求,会将内容放在浏览器URL内,不如post请求安全。post请求会把内容放到request内,而不会显示在浏览器URL内,相对来说要更加的安全。

在请求中有很多固定的参数,作为了解。如Referer(浏览器通知服务器当前请求来自何处),If-Modified-Since(浏览器通知服务器本地缓存的最后变更时间),Cookie(与会话有关技术,用于存放浏览器缓存的cookie信息).

HTTP响应中则有一些比较重要的信息,如状态码:200:请求成功,302:请求重定向,304:请求资源没有改变,访问本地缓存,404:请求资源不存在,500:服务器内部错误。通常配合这些状态码来完成页面的跳转等操作。

WEB开发,是用的是B/S通信模式,即使用浏览器的方式来和服务器进行交互。

对于Servlet来说,Servlet需要编写实现类,并且在3.0以上版本也可以不用在web.xml进行配置,直接使用@webServlet来进行配置,更加方便快捷。实现类通常继承HttpServlet类,并且复写doGet和doPost方法。下面是一个小demo:

package com.itheima.login;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import com.itheima.domain.User;
import com.itheima.utils.DataSourceUtils;

public class LoginServlet extends HttpServlet {

    @Override
    public void init() throws ServletException {
        //在Seveltcontext域中存一个数据count
        int count = 0;
        this.getServletContext().setAttribute("count", count);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        //username=zhangsan&password=123

        //1、获得用户名和密码
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        //2、从数据库中验证该用户名和密码是否正确
        QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
        String sql = "select * from user where username=? and password=?";
        User user = null;
        try {
            user = runner.query(sql, new BeanHandler<User>(User.class), username,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        //3、根据返回的结果给用户不同显示信息
        if(user!=null){
            //从servletcontext中取出count进行++运算
            ServletContext context = this.getServletContext();
            Integer count = (Integer) context.getAttribute("count");
            count++;
            //用户登录成功
            response.getWriter().write(user.toString()+"---you are success login person :"+count);
            context.setAttribute("count", count);
        }else{
            //用户登录失败
            response.getWriter().write("sorry your username or password is wrong");
        }

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

原文地址:https://www.cnblogs.com/wushenjiang/p/12243248.html

时间: 2024-07-30 21:43:40

记账本开发记录——第十二天(2020.1.30)的相关文章

记账本开发记录——第六天(2020.1.22)

在学习JQ之前,我上网百度了一下,看看是否有学习该部分的必要.根据网友所说,虽然JQ的使用率不比以前,但作为一个十分经典的框架,仍然值得学习.现在很多框架都依赖于JQ,这点也是不容忽略的.在JQ中的AJAX也是个很多公司需要的功能.总的来说对于初学者来说学习JQ还是很有必要的. 在学习了一部分JS的基础上,今天学习了jQuery的基本操作.jQuery其实就是js query(查询),从名字可以看到,jQuery是对JS代码的一个简单化的框架.运用JQ可以很简单的编写出用JS来说比较复杂的案例.

家庭记账本开发记录(1)

这个寒假前面的时间一直在学习web前端,因为之前开发JavaWeb时,一些界面应用太粗糙,所以利用前段时间系统了解了一下前端技术,以便接下来后端开发的界面美观.再就是今天的关于家庭记账本软件的开发,确定了一下设计思路,其中主要是对数据库的操作比较重要,因为记账的收入支出需要进行数据汇总,一段时间以后用可视化数据报表进行呈现.对收入支出的费用又各有分类,收入有薪资.理财.红包.借入.收债.其他,支出消费.餐饮.购物.住房.交通.通讯.娱乐.医疗.教育.红包.旅行.投资.借出.还债.其他,至于对数据

记账本开发记录——第八天(2020.1.26)

在疫情如此严重的现在,在家安心学习. 昨天初一守夜无聊的时候学完了JQ剩下的部分.这里讲到了一个插件validate.使用这个插件可以很方便的进行表单的检验,并且具有很好看的效果样式.以下是代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>网站注册页面</title> 6 <style> 7 #contan

记账本开发记录——第三天(2020.1.20)

本来按照今天的原计划来说,应该学习完javascript的基础内容.但今天一天都在干活,到晚上八点才坐到电脑前,已经精疲力尽了.于是简单设计了一下网站的几个页面和大体结构.以下是具体: 网站主界面: 开始记账界面: (希望实现:点击加号后弹出一个界面进行增) (删除时要弹出确认提示) (改时可以更改所有信息,也是弹出一个界面) 账单汇总 (选择汇总条件,目前只计划添加某时间段,如果时间允许增加种类等属性) (查找后输出在某段时间内总花费) 图表数据(尝试使用百度的smartart功能,生成一段时

记账本开发记录——第四天(2020.1.21)

总结:今天学习完了javascript的第一部分基础知识(昨天没学完的)并尝试使用div+css编写了记账本的index.html.以下是具体: 首先,使用javascript完成了首页轮播图效果,使用了setInterval.下面是代码:(实现较为低级) 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>首页</title>

记账本开发记录——第十天(2020.1.28)

今天,简单学习了JDBC连接池的概念和自定义连接池. 所谓连接池,就是连接完后不close,而是归还到连接池内,可以解决数据库连接的性能问题. 对于自定义连接池,我们可以自己创建连接池,然后通过这个连接池进行连接.如下代码: 1 public class MyDataSource implements DataSource{ 2 // 创建一个List集合用于存放多个连接对象. 3 private List<Connection> list = new ArrayList<Connect

记账本开发记录——第十三天(2020.1.31)

今天主要是学习了如何使用servletcontext来进行一个记录网站登录人数的案例.在实现这个案例之前,首先要学习相关的知识. ServletContext:在服务器启动的时候,为每个web应用创建一个单独的ServletContext对象,我们可以使用这个对象存储数据. 那么我们实现这个案例的思路是如何呢?我们可以在登录的Servlet中初始一个变量count为0,然后将其存到ServletContext中,在进入页面时就读取ServletContext的内容.下面是相关代码: packag

记账本开发记录——第五天(2020.1.22)

今天继续学习了javascript的相关内容,同时学习了关于表格标签的一些新标签. 首先,学习了如何使表格隔行换色.整体的思路不算复杂,用java里的思路就可以大致理解,以下是效果和代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>表格隔行换色</title> 6 <script> 7 window.onl

记账本开发记录——第七天(2020.1.24)

今天由于除夕以及各种乱七八糟的事,并没有学习完JQ的知识.下面是我学习到的案例: 首先,了解了使用JQ的遍历操作.在JQ中,有两种遍历方法,这里采用的是第二种方法.通过JQ重写了JS的省市二级联动.下面是代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>使用jQuery完成省市二级联动</title> 6 <st