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