Servlet程序访问的流程

方式一:
jsp:
<font color="red">${ msg }</font>
<form action="/personal/requestLogin" method="post">
姓名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="登录"/>
</form>

web.xml

<servlet>
<servlet-name>requestLogin</servlet-name>
<servlet-class>com.pers.request.service.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>requestLogin</servlet-name>
<url-pattern>/requestLogin</url-pattern>
</servlet-mapping>

LoginServlet.java
public class LoginServlet extends HttpServlet {
// 登录校验代码
}

方式二:注解 (前提是@WebServlet("/LoginServlet")必须和类名LoginServlet一致)
jsp:
<font color="red">${ msg }</font>
<form action="/personal/LoginServlet" method="post">
姓名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="登录"/>
</form>
LoginServlet.java
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
// 登录校验代码
}

以下是详细代码:

==================================================傲娇的分割线==================================================

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录测试</title>
</head>
<body>
    <h3>登录页面</h3>
    <form action="/personal/requestLogin" method="post">
        姓名:<input type="text" name="username"/><br/>
        密码:<input type="password" name="password"/><br/>
        <input type="submit" value="登录"/>
    </form>
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>personal</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>requestLogin</servlet-name>
    <servlet-class>com.pers.request.service.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>requestLogin</servlet-name>
    <url-pattern>/requestLogin</url-pattern>
  </servlet-mapping>
</web-app>

LoginServlet.java

package com.pers.request.service;

import java.io.IOException;

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

import com.pers.request.domain.User;

/**
 * Servlet implementation class RequestLogin
 * 
 * 登录测试
 */
//@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 获取从前台表单传过来的值
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        // 从数据库中查询
        UserService userService = new UserService();
        User user = userService.login(username, password);
        
        // 获取项目名称
        String projectName = request.getContextPath();
        
        // 判断user是否存在
        if (user!=null) {
            // 登录成功,跳转到登录成功页面(重定向)
            // (重定向的地址的写法:包含项目名称的,包含项目名称的,包含项目名称的,包含项目名称的)
            response.sendRedirect(projectName + "/jsp/request/success.jsp");
        } else {
            // 登录失败,提示信息并跳转到登录页面(转发)
            request.setAttribute("msg", "用户名或密码错误,请重新输入!");
            request.getRequestDispatcher("/jsp/request/login.jsp").forward(request, response);
        }
        
        
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

UserService.java

package com.pers.request.service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.pers.jdbc.utils.JdbcUtils;
import com.pers.request.domain.User;

/** 
* @author liangyadong 
* @date 2016年10月25日 下午4:16:00 
* @version 1.0 
*/
public class UserService {

    /**
     * 根据用户名和密码查询
     * @param username
     * @param password
     * @return
     */
    public User login(String username, String password){
        
        /**
         * 步骤
         * 1.加载驱动获取连接
         * 2.编写sql
         * 3.预编译sql
         * 4.设置参数
         * 5.执行sql
         * 6.遍历结果集,判断用户是否存在
         */
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        // 获取连接
        conn = JdbcUtils.getConnection();
        // 编写sql
        String sql = "select * from t_user where username = ? and password = ?";
        try {
            // 预编译sql
            stmt = conn.prepareStatement(sql);
            // 设置参数
            stmt.setString(1,username);
            stmt.setString(2, password);
            // 执行sql
            rs = stmt.executeQuery();
            // 遍历结果集
            while (rs.next()) {
                User user = new User();
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                return user;
            }
            
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            JdbcUtils.release(conn, stmt, rs);
        }
        
        
        return null;
    }
    
}

User.java

package com.pers.request.domain;
/** 
* @author liangyadong 
* @date 2016年10月25日 下午2:46:03 
* @version 1.0 
*/
public class User {
    
    private String username;
    private String password;
    
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    
    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password + "]";
    }
    

}

JdbcUtils.java

package com.pers.jdbc.utils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/** 
* @author liangyadong 
* @date 2016年10月13日 下午3:23:22 
* @version 1.0 
*/
public class JdbcUtils {

    public static final String DRIVERCLASS;
    public static final String URL;
    public static final String USERNAME;
    public static final String PASSWORD;
    
    /**
     * 静态代码块
     * 
     * 步骤
     * 1.创建properties对象
     * 2.获取db配置文件的输入流
     * 3.properties对象加载配置文件
     * 4.properties对象通过key获取值
     */
    static{
        // 读取配置文件,将值赋给常量
        // 创建properties对象
        Properties pro = new Properties();
        
        // 获取db.properties文件的输入流
        InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("com/pers/jdbc/utils/db.properties");
        
        // 加载配置文件
        try {
            pro.load(in);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        // 通过key获取值
        DRIVERCLASS = pro.getProperty("driverClass");
        URL = pro.getProperty("url");
        USERNAME = pro.getProperty("username");
        PASSWORD = pro.getProperty("password");
        
    }
    
    /**
     * 加载驱动
     */
    public static void loadDriver(){
        try {
            Class.forName(DRIVERCLASS);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    /**
     * 获取连接
     * @return
     */
    public static Connection getConnection() {
        // TODO Auto-generated method stub
        // 加载驱动
        loadDriver();
        try {
            // 获取连接
            return DriverManager.getConnection(URL,USERNAME,PASSWORD);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return null;
    }
    
    /**
     * 释放资源
     * 
     * 查询的释放资源方法
     * @param conn
     * @param sta
     * @param rs
     */
    public static void release(Connection conn,Statement sta,ResultSet rs){
        if (rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            rs = null;
        }
        if (sta!=null) {
            try {
                sta.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            sta = null;
        }
        if (conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            conn = null;
        }
    }
    
    /**
     * 释放资源
     * 
     * 增删改的释放资源方法
     * @param conn
     * @param sta
     */
    public static void release(Connection conn,Statement sta){
        if (sta!=null) {
            try {
                sta.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            sta = null;
        }
        if (conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            conn = null;
        }
    }
    

}

db.properties

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql:///myTest
username=root
password=root
原文地址:https://www.cnblogs.com/yadongliang/p/6005600.html