zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    深度学习之Python 脚本训练keras mnist 数字识别模型
    Hive udtf 报错 java.lang.String cannot be cast to java.lang.Integer
    vue 中 created 和 mounted 钩子生命周期 问题
    vue和 jsplumb 集成 出现下面的错误
    Cognos 中 javascript jQuery 的使用
    Hadoop 下常用的命令
    剑指offer30:连续子数组的最大和
    剑指offer29:最小的k个数
    剑指offer28:找出数组中超过一半的数字。
    剑指offer27:按字典序打印出该字符串中字符的所有排列
  • 原文地址:https://www.cnblogs.com/yadongliang/p/6005600.html
Copyright © 2011-2022 走看看