Servlet应用

Servlet应用

 

建立一张用户表,用servlet校验用户名密码,只有在用户表中存在的用户才能登录到系统主页。

 

1、编写一个servlet进行用户名和密码校验,获取登录页面的用户名密码,并显示出来

 

1.1创建Servlet

 

 

 

 

1.2导入前面写的登录页面

将前面写好的登录页面文件复制到web目录下

 

 

 重新运行程序,输入地址,可以看见之前的登录页面已经成功导入

 

 

 

1.3创建数据库

 

1.4连接数据库

首先需要下载连接相应数据库的架包,这里我用的是SqlServer数据库,相应架包下载地址https://www.microsoft.com/zh-CN/download/details.aspx?id=56615,下载后将它解压存放到WEB-INF下的lib文件中

 

连接数据库,验证数据

@WebServlet(name="LoginServlet")
public class LoginServlet extends javax.servlet.http.HttpServlet
    {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        response.setContentType("text/html;charset = utf-8");
        request.setCharacterEncoding("utf-8");
        PrintWriter writer=response.getWriter();

        String strName = request.getParameter("username");
        String strPwd = request.getParameter("password");
        //String msg=c;
        //writer.println(msg);
        //writer.close();


        Connection conn = null;

        try {
            //Class.forName("com.microsoft.sqlServer.jdbc.SQLServerDriver");
            String url = "jdbc:sqlserver://localhost:1433;DatabaseName=education;";

            conn = DriverManager.getConnection(url ,"sa","123456");

            Statement stmt = conn.createStatement();
            String sql = "select * from users";
            System.out.println(sql);

            ResultSet rs = stmt.executeQuery(sql);

            if(rs.next()) {
                writer.println("用户名:"+strName+"<br>"+"密码:"+strPwd);
            }
            else{
                writer.println("用户名或者密码错误");
            }

            rs.close();
            stmt.close();
            conn.close();
        } catch (Exception var11) {
            System.out.println(var11);
        }
    }
View Code

 

连接成功

 

 

 校验成功

 

 

 

2、使用cookie,如果用户在登录时选择保存登录信息,30天内,用户无需登录

2.1账号登录成功生成Cookie,设置有效时长为30天

 

2.2下次登陆时,自动获取Cookie

 

 

 

 效果如下:

 

 

 

 

 

3、使用session,显示计科院网站当前在线人数

3.1创建监听

 

 

 

3.2注册监听

 

 

 

 3.3获取当前在线人数

 

 

 

 

效果如下:

 

 4、使用过滤器解决乱码问题,登录时用户名为中文可能不能正常识别,解决该问题

4.1创建过滤器

 

 

4.2配置过滤器

 

 

效果如下:

将编码方式注释掉,可以看见没有输出乱码

 

 

 

 

 

 

 码云地址:https://gitee.com/reganmian/Test.git

 

posted @ 2020-06-05 15:24  Via。  阅读(161)  评论(0编辑  收藏  举报