netctoss02_登陆页面【Servlet+JSP版】

netctoss02_登陆页面【Servlet+JSP版】


1.设计分析

2.代码实现

1)Admin实体类

Admin.java

package com.netctoss.entity;

import java.io.Serializable;
import java.sql.Timestamp;

public class Admin implements Serializable {
	
	private int admin_id;  //id
	private String admin_code;  //账号
	private String password;  //密码
	private String name;  //真实姓名
	private String telephone;  //电话
	private String email;  //邮箱
	private Timestamp enrolldate;  //创建时间
	
	public int getAdmin_id() {
		return admin_id;
	}
	public void setAdmin_id(int adminId) {
		admin_id = adminId;
	}
	public String getAdmin_code() {
		return admin_code;
	}
	public void setAdmin_code(String adminCode) {
		admin_code = adminCode;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getTelephone() {
		return telephone;
	}
	public void setTelephone(String telephone) {
		this.telephone = telephone;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Timestamp getEnrolldate() {
		return enrolldate;
	}
	public void setEnrolldate(Timestamp enrolldate) {
		this.enrolldate = enrolldate;
	}
	
	public String toString() {
		return "Admin [admin_id=" + admin_id + ",admin_code=" + admin_code
				+ ", password=" + password + "]";
	}
	
}


2)设计DAO接口及实现

Admin.dao

package com.netctoss.dao;

import com.netctoss.entity.Admin;

public interface AdminDao {
	
	Admin findByCode(String adminCode);
	
}
AdminDaoJdbcImpl.java
package com.netctoss.dao.impl;

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

import com.netctoss.dao.AdminDao;
import com.netctoss.entity.Admin;
import com.netctoss.util.DBUtil;

public class AdminDaoJdbcImpl implements AdminDao {

	@Override
	public Admin findByCode(String adminCode) {
		Connection conn = null;
		try{
			conn = DBUtil.getConnection();
			String sql = "select * from admin_info where admin_code=?";
			PreparedStatement ps = conn.prepareStatement(sql);
			ps.setString(1,adminCode);
			ResultSet rs =  ps.executeQuery();
			while(rs.next()){
				Admin admin = new Admin();
				admin.setAdmin_id(rs.getInt("admin_id"));
				admin.setAdmin_code(rs.getString("admin_code"));
				admin.setPassword(rs.getString("password"));
				admin.setName(rs.getString("name"));
				admin.setTelephone(rs.getString("telephone"));
				admin.setEmail(rs.getString("email"));
				admin.setEnrolldate(rs.getTimestamp("enrolldate"));
				return admin;
			}
		}catch(SQLException e){
			e.printStackTrace();
			throw new RuntimeException("查询管理员失败",e);
		}finally{
			DBUtil.close(conn);
		}
		return null;
	}

}

3)Servlet设计

MainServlet.java

package com.netctoss.web;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.List;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.collections4.sequence.DeleteCommand;

import com.netctoss.dao.AdminDao;
import com.netctoss.dao.CostDao;
import com.netctoss.entity.Admin;
import com.netctoss.entity.Cost;
import com.netctoss.util.Factory;
import com.netctoss.util.ImageUtil;

public class MainServlet extends HttpServlet{

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		//获取请求路径
		String path =req.getServletPath();
		//处理各个请求
		if("/toLogin.do".equals(path)){
			//打开登陆页面
			toLogin(req,res);
		}else if("/toIndex.do".equals(path)){
			//打开主页
			toIndex(req,res);
		}else if("/login.do".equals(path)){
			//登陆校验
			login(req,res);
		}else if("/createImage.do".equals(path)){
			//验证码图片
			createImage(req,res);
		}else{
			throw new RuntimeException("查无此页");
		}
	}

	private void createImage(HttpServletRequest req, HttpServletResponse res) throws IOException {
		Object[] objs = ImageUtil.createImage();
		HttpSession session = req.getSession();
		session.setAttribute("imageCode",objs[0]);
		res.setContentType("image/png");
		BufferedImage image = (BufferedImage) objs[1];
		OutputStream os = res.getOutputStream();
		ImageIO.write(image, "png", os);
	}


	private void login(HttpServletRequest req, HttpServletResponse res) 
			throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		String adminCode = req.getParameter("adminCode");
		String password = req.getParameter("password");
		String imageCode = req.getParameter("imageCode");
		
		AdminDao dao = Factory.getAdminDao();
		Admin admin = dao.findByCode(adminCode);
		
		HttpSession session = req.getSession();
		String icode = (String) session.getAttribute("imageCode");
		if(!icode.equalsIgnoreCase(imageCode)){
			req.setAttribute("error","验证码错误");
			req.getRequestDispatcher("WEB-INF/main/login.jsp").forward(req,res);
			return ;
		}
		
		if(admin == null){
			req.setAttribute("error","用户名错误");
			req.getRequestDispatcher("WEB-INF/main/login.jsp").forward(req,res);
		}else if(!admin.getPassword().equals(password)){
			req.setAttribute("error","密码错误");
			req.getRequestDispatcher("WEB-INF/main/login.jsp").forward(req,res);
		}else{
			session.setAttribute("adminCode",adminCode);
			res.sendRedirect("toIndex.do");
		}
		
	}

	private void toIndex(HttpServletRequest req, HttpServletResponse res) 
			throws ServletException, IOException {
		req.getRequestDispatcher("WEB-INF/main/index.jsp").forward(req,res);
	}

	private void toLogin(HttpServletRequest req, HttpServletResponse res) 
			throws ServletException, IOException {
		req.getRequestDispatcher("WEB-INF/main/login.jsp").forward(req,res);
	}
	
}

4)Jsp页面设计

login.jsp

<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>NetCTOSS</title>
        <link type="text/css" rel="stylesheet" media="all" href="styles/global.css" />
        <link type="text/css" rel="stylesheet" media="all" href="styles/global_color.css" /> 
        <script type="text.javascript">
        	function submit(){
				document.forms[0].submit();
			}
        </script>
    </head>
    <body class="index">
        <div class="login_box">
	        <form action="login.do" method="post">
	            <table>
	                <tr>
	                    <td class="login_info">账号:</td>
	                    <td colspan="2"><input name="adminCode" type="text" class="width150" value="${param.adminCode }"/></td>
	                    <td class="login_error_info"><span class="required">30长度的字母、数字和下划线</span></td>
	                </tr>
	                <tr>
	                    <td class="login_info">密码:</td>
	                    <td colspan="2"><input name="password" type="password" class="width150" value="${param.password }"/></td>
	                    <td><span class="required">30长度的字母、数字和下划线</span></td>
	                </tr>
	                <tr>
	                    <td class="login_info">验证码:</td>
	                    <td class="width70"><input name="imageCode" type="text" class="width70" /></td>
	                    <td><img src="createImage.do" alt="验证码" title="点击更换" 
	                    	οnclick="this.src='createImage.do?x='+Math.random();"/></td>  
	                    <td><span class="required"></span></td>              
	                </tr>            
	                <tr>
	                    <td></td>
	                    <td class="login_button" colspan="2">
	                        <a href="javascript:;" οnclick="submit();"><img src="images/login_btn.png" /></a>
	                    </td>    
	                    <td><span class="required">${error}</span></td>                
	                </tr>
	            </table>
            </form>
        </div>
    </body>
</html>

index.jsp

<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>NetCTOSS</title>
        <link type="text/css" rel="stylesheet" media="all" href="styles/global.css" />
        <link type="text/css" rel="stylesheet" media="all" href="styles/global_color.css" /> 
    </head>
    <body class="index">
        <!--导航区域开始-->
        <div id="index_navi">
            <ul id="menu">
                <li><a href="toIndex.do" class="index_on"></a></li>
                <li><a href="role/role_list.html" class="role_off"></a></li>
                <li><a href="admin/admin_list.html" class="admin_off"></a></li>
                <li><a href="findCost.do" class="fee_off"></a></li>
                <li><a href="account/account_list.html" class="account_off"></a></li>
                <li><a href="service/service_list.html" class="service_off"></a></li>
                <li><a href="bill/bill_list.html" class="bill_off"></a></li>
                <li><a href="report/report_list.html" class="report_off"></a></li>
                <li><a href="user/user_info.html" class="information_off"></a></li>
                <li><a href="user/user_modi_pwd.html" class="password_off"></a></li>
            </ul>
        </div>
    </body>
</html>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值