Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung des Java-Web-Beispielcodes einschließlich Bestätigungscode und Berechtigungsanmeldung (Bild)

Detaillierte Erläuterung des Java-Web-Beispielcodes einschließlich Bestätigungscode und Berechtigungsanmeldung (Bild)

黄舟
黄舟Original
2017-03-31 10:53:464750Durchsuche

In diesem Artikel wird hauptsächlich Java Web vorgestellt, einschließlich Bestätigungscode und Berechtigungs-Login-Beispielcode Die verwendeten Entwicklungstools sind myeclipse10, MySQL-Datenbank . Den spezifischen Implementierungscode finden Sie in diesem Artikel

Die verwendeten Entwicklungstools sind myeclipse10, MySQL-Datenbank

Zuallererst. , erstellen Sie ein neues Java-Webprojekt in myeclipse 🎜>

Fügen Sie die Codes in jedes Paket unten ein

com.ningmeng.dao-Paket

Detaillierte Erläuterung des Java-Web-Beispielcodes einschließlich Bestätigungscode und Berechtigungsanmeldung (Bild)

com.ningmeng.model-Paket

com .ningmeng.util-Paket Detaillierte Erläuterung des Java-Web-Beispielcodes einschließlich Bestätigungscode und Berechtigungsanmeldung (Bild)Detaillierte Erläuterung des Java-Web-Beispielcodes einschließlich Bestätigungscode und Berechtigungsanmeldung (Bild)

com.ningmeng.web-Paket

com.servlet-Paket

package com.ningmeng.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.ningmeng.model.User;
public class UserDao {
 public User login(Connection con,User user) throws SQLException{
  User resultUser=null;
  String sql="select * from user where username=? and password=?";
  PreparedStatement ps=con.prepareStatement(sql);//
  ps.setString(1, user.getUsername());
  ps.setString(2, user.getPassword());
  ResultSet rs=ps.executeQuery();
  if(rs.next()){
   resultUser=new User();
   resultUser.setUsername(rs.getString("username"));
   resultUser.setPassword(rs.getString("password"));
  }
  return resultUser;
 }
}

Web konfigurieren.

xml
package com.ningmeng.model;
public class User {
 private int id;
 private String username;
 private String password;
 public User() {
  super();
 }
 public User(String username, String password) {
  super();
  this.username = username;
  this.password = password;
 }
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 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;
 }
}

package com.ningmeng.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
 public class DbUtil {
 private String url="jdbc:mysql://localhost:3306/db-jsp";
 private String user="root";
 private String password="123";
 private String driver="com.mysql.jdbc.Driver";
 public Connection getCon() throws Exception{
     Class.forName(driver);
    Connection con=DriverManager.getConnection(url, user, password);
    return con;
 }
 public static void getClose(Connection con) throws SQLException{
  if(con!=null){
   con.close();
  }
 }
 /*public static void main(String[] args) {
  DbUtil db=new DbUtil();
  try {
   db.getCon();
   System.out.println("测试连接数据库,连接成功");
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   System.out.println("测试连接数据库,连接失败");
  }
 }*/
}
login.jsp:

package com.ningmeng.web;
import java.io.IOException;
import java.sql.Connection;
import java.io.*;
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 javax.servlet.http.*;
import com.ningmeng.dao.UserDao;
import com.ningmeng.model.User;
import com.ningmeng.util.DbUtil;
public class LoginServlet extends HttpServlet{
 DbUtil db=new DbUtil();
 UserDao userDao=new UserDao();
 /**
  * 
  */
 private static final long serialVersionUID = 1L;
 @Override
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  this.doPost(request, response);
 }
 @Override
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String username=request.getParameter("username");
  String password=request.getParameter("password");
  String checkcode=request.getParameter("checkCode");
  HttpSession session=request.getSession();
  //session.getAttribute("randCheckCode");
  String s = (String)session.getAttribute("randCheckCode");
  if(!checkcode.equals(s))
  {
   response.sendRedirect("linmao.jsp");
  }else{
   if(request.getParameter("ra").equals("l")){
  Connection con=null;
  try {
   User user=new User(username,password);
   con=db.getCon();
   User currentUser=userDao.login(con, user);
   if(currentUser==null){
    //System.out.println("no");
    request.setAttribute("error", "用户名或者密码错误");
    request.setAttribute("username", username);
    request.setAttribute("password", password);
    request.getRequestDispatcher("login.jsp").forward(request, response);
   }else{
    //System.out.println("yes");
    HttpSession session1=request.getSession();
    session1.setAttribute("currentUser",currentUser);
    response.sendRedirect("main.jsp");
   }
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   }
  }
   else{
    response.sendRedirect("linmao.jsp");
   }
  }
 }
 }
main.jsp:

package com.servlet;
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
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 javax.imageio.ImageIO;
public class PictureCheckCode extends HttpServlet {
 private static final long serialVersionUID = 1L;
 public PictureCheckCode() {
  super();
 }
 public void destroy() {
  super.destroy(); 
 }
 public void init() throws ServletException {
  super.init();
 }
 /*该方法主要作用是获得随机生成的颜色*/ 
 public Color getRandColor(int s,int e){
  Random random=new Random ();
  if(s>255) s=255;
  if(e>255) e=255;
  int r,g,b;
  r=s+random.nextInt(e-s); //随机生成RGB颜色中的r值
  g=s+random.nextInt(e-s); //随机生成RGB颜色中的g值
  b=s+random.nextInt(e-s); //随机生成RGB颜色中的b值
  return new Color(r,g,b);
 }
 @Override
 public void service(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  //设置不缓存图片
  response.setHeader("Pragma", "No-cache");
  response.setHeader("Cache-Control", "No-cache");
  response.setDateHeader("Expires", 0);
  //指定生成的响应图片,一定不能缺少这句话,否则错误.
  response.setContentType("image/jpeg");
  int width=86,height=33;  //指定生成验证码的宽度和高度
  BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //创建BufferedImage对象,其作用相当于一图片
  Graphics g=image.getGraphics();  //创建Graphics对象,其作用相当于画笔
  Graphics2D g2d=(Graphics2D)g;  //创建Grapchics2D对象
  Random random=new Random();
  Font mfont=new Font("楷体",Font.BOLD,20); //定义字体样式
  g.setColor(getRandColor(200,250));
  g.fillRect(0, 0, width, height); //绘制背景
  g.setFont(mfont);     //设置字体
  g.setColor(getRandColor(180,200));
  //绘制100条颜色和位置全部为随机产生的线条,该线条为2f
  for(int i=0;i<100;i++){
   int x=random.nextInt(width-1);
   int y=random.nextInt(height-1);
   int x1=random.nextInt(6)+1;
   int y1=random.nextInt(12)+1;
   BasicStroke bs=new BasicStroke(2f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); //定制线条样式
   Line2D line=new Line2D.Double(x,y,x+x1,y+y1);
   g2d.setStroke(bs);
   g2d.draw(line);  //绘制直线
  }
  //输出由英文,数字,和中文随机组成的验证文字,具体的组合方式根据生成随机数确定。
  String sRand="";
  String ctmp="";
  int itmp=0;
  //制定输出的验证码为四位
  for(int i=0;i<4;i++){
   switch(random.nextInt(3)){
    case 1:  //生成A-Z的字母
      itmp=random.nextInt(26)+65;
      ctmp=String.valueOf((char)itmp);
      break;
    default:
      itmp=random.nextInt(10)+48;
      ctmp=String.valueOf((char)itmp);
      break;
   }
   sRand+=ctmp;
   Color color=new Color(20+random.nextInt(110),20+random.nextInt(110),random.nextInt(110));
   g.setColor(color);
   //将生成的随机数进行随机缩放并旋转制定角度 PS.建议不要对文字进行缩放与旋转,因为这样图片可能不正常显示
   /*将文字旋转制定角度*/
   Graphics2D g2d_word=(Graphics2D)g;
   AffineTransform trans=new AffineTransform();
   trans.rotate((45)*3.14/180,15*i+8,7);
   /*缩放文字*/
   float scaleSize=random.nextFloat()+0.8f;
   if(scaleSize>1f) scaleSize=1f;
   trans.scale(scaleSize, scaleSize);
   g2d_word.setTransform(trans);
   g.drawString(ctmp, 15*i+18, 14);
  }
  HttpSession session=request.getSession(true);
  session.setAttribute("randCheckCode", sRand);
  g.dispose(); //释放g所占用的系统资源
  ImageIO.write(image,"JPEG",response.getOutputStream()); //输出图片
 }
}
linmao.jsp:

Das Projekt umfasst jetzt noch keine Überprüfungscodes und Berechtigungen. Die Funktion zum Abrufen von Passwörtern wurde noch nicht in der Struktur verwendet 🎜>

<?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>web04</display-name>
 <welcome-file-list>
 <welcome-file>login.jsp</welcome-file>
  <welcome-file>main.jsp</welcome-file>
 </welcome-file-list>
 <servlet>
  <servlet-name>LoginServlet</servlet-name>
  <servlet-class>com.ningmeng.web.LoginServlet</servlet-class>
 </servlet>
 <servlet>
 <description>输出验证码</description>
 <display-name>This is the display name of my J2EE component</display-name>
 <servlet-name>PictureCheckCode</servlet-name>
 <servlet-class>com.servlet.PictureCheckCode</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>LoginServlet</servlet-name>
  <url-pattern>/login</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
 <servlet-name>PictureCheckCode</servlet-name>
 <url-pattern>/PictureCheckCode</url-pattern>
 </servlet-mapping>
</web-app>

Die Kontonummer und das Passwort befinden sich in der Datenbanktabelle
<%@ 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>Insert title here</title>
<script language="javascript">
function myReload() {
 document.getElementById("CreateCheckCode").src = document
   .getElementById("CreateCheckCode").src
   + "?nocache=" + new Date().getTime();
}
</script>
</head>
<body>
<form action="login" method="post">
 <table>
  <tr>
   <th colspan="2">登录界面</th>
  </tr>
  <tr>
   <td>账号:</td>
   <td><input type="text" id="username" name="username" value="${username}"></td>
  </tr>
  <tr>
   <td>密码:</td>
   <td><input type="password" id="password" name="password" value="${password}"></td>
  </tr>
  <tr>
   <td>验证码:</td>
   <td><input name="checkCode" type="text" id="checkCode" title="验证码区分大小写"
    size="8" ,maxlength="4" />
   <img src="PictureCheckCode" id="CreateCheckCode" align="middle">
   <a href="" onclick=" rel="external nofollow" myReload()"> 看不清,换一个</a>
  </tr>
  <tr>
   <td>类型:</td>
   <td>
   <input type="radio" name="ra" value="l" checked="checked"/>一般研究人员
   <input type="radio" name="ra" value="m" />管理员研究人员
   </td>
  </tr>
  <tr>
   <td>
   <input type="submit" value="提交">
   <font color="red">${error}</font>
   </td>
  </tr>
 </table>
</form>
</body>
</html>

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Java-Web-Beispielcodes einschließlich Bestätigungscode und Berechtigungsanmeldung (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn