jsp登录小程序实操

1.项目介绍:这仅是一个初级练手项目,功能登录,存在此用户-->登录成功  不存在此用户-->登录失败;

2.项目框架:jsp+serlvet+mysql

3.共存在三个jsp页面(登录页面、错误页面、主页)和一个中心处理器servlet

4.项目步骤:

4.1:设计数据库(我只设计了一个账户名和一个密码)

     create databse hib_demo;

    use hib_demo;

     create table userinfo(

                  username varchar(20),

                 pwd varchar(15)

)

4.2:写jsp页面(这是一个登录页面,内容非常简单)

     <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<html>
  <head>
 
    <title>登录页面</title>
    
    
  </head>
 
  <body>
               <form action="/Test1/Test1" method="post">
                   用户名:<input type="text" name="username" values=""><br/>
                   密    码:<input type="text" name="pwd" values=""><br/>
                   <input type="submit" values="提交">
                   <input type="reset"  values="重置" >
               </form>
  </body>
</html>

4.3 写一个主页

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<html>
  <head>    
    <title>主页</title>
    
    
  </head>
 
  <body>
           欢迎<%=session.getAttribute("username") %>!<%-- 以session来获取账户名 --%>
          主页正在建设当中。。。。。
  </body>
</html>

4.4写一个错误页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<html>
  <head>
    <title>错误页面</title>
  </head>
  <body>
               您所输入的账户密码错误了。。。。。
  </body>
</html>
4.5写中心处理器servlet

package sam;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

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

public class Test1 extends HttpServlet {


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //无论在表单中调用post或者get方法都只会执行post方法。(因为我把dopost方法放到get里面了)
        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //命令浏览器以文件形式和utf-8编码来读取该文件
        response.setContentType("text/html;charset=utf-8");
        //接着我们来获取向客户端输出语句的out
        PrintWriter out = response.getWriter();
        //获取页面提交(Post)上来的username和pwd值
        String username = null,pwd=null;
        username=request.getParameter("username");
        pwd=request.getParameter("pwd");
        //对客户端请求进行重新编码:utf-8
        request.setCharacterEncoding("utf-8");
        //设置一面旗帜(待会在判断是否已经登录的时候使用)
        boolean flag=false;
        //获取jdbc的资源(connection;preparedstatement(推荐使用它不推荐statment);resultset)
        Connection  conn=null;
        PreparedStatement pstmt=null;
        ResultSet rs=null;
        //写上sal语句:查询userinfo表里的数据
        String sql="select * from userinfo";
        //mysql的连接方式(具体到库而非表)
        String url="jdbc:mysql://localhost:3306/hib_demo";
        String name="root";
        String password="samlin123";
        try {
            
            //获取com.mysql.jdbc.Driver驱动
            Class.forName("com.mysql.jdbc.Driver");
            //用drivermanger来连接数据库
            conn=DriverManager.getConnection(url, name, password);
            //用preparedstatement执行sql语句    
            pstmt=conn.prepareStatement(sql);
            //用rs容器来装上pstmt的结果集
            rs=pstmt.executeQuery();
            //判断rs容器是否为空    
            if(rs!=null){
                    //不为空则获取它的第一个值(没有遍历效果,因为我的数据库只写上一条数据(1  username:sam pwd:sam))
                    if(rs.next()){
                        //rs.getstring("pwd")作用是:获取当前行中指定的"pwd"列的值。再用该值来判断是否和pwd变量里的值一致。
                        if(rs.getString("pwd").equals(pwd)){
                            //如果是一致的话,将旗帜变为true
                            flag=true;    
                        }
                    }    
                }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            //拿着flag=true的则是账户密码都对的对象
            if(flag){
                //往jsp的内置对象session域中存放变量username的值(sam)
                request.getSession().setAttribute("username", username);
                //跳转到sucess.jsp页面
                response.sendRedirect(
                        request.getContextPath()+"/Success.jsp"
                );
            }else{
                //登录失败的话,跳转到error.jsp页面
                response.sendRedirect(
                        request.getContextPath()+"/error.jsp");
            }
        }
        out.flush();//其实这里已经没有必要写了,因为我都没有使用out资源
        out.close();
    }

}

4.6最后进行web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <servlet-name>Test1</servlet-name>
    <servlet-class>Sam.Test1</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Test1</servlet-name>
    <url-pattern>/Test1</url-pattern>//注意这里结尾,一开始我写上serlvet的全名了,结果错了,调试好几次才知道只写“/类型名”;
  </servlet-mapping>

</web-app>

5.总结:这是一个非常基础的实例,但是我本人感觉学习了很多,它里面涉及到很多基础知识点,如果你一一去体会还是能够有所提升的。


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值