jsp實現登錄界面

2022-06-16 15:48:43 來源:易采站長站 作者:

jsp實現登錄界面

本文實例為大家分享了jsp實現登錄界面的具體代碼,供大家參考,具體內容如下7Yk站長之家-易采站長站-Easck.Com

一.用戶登錄案例需求:

1.編寫login.jsp登錄頁面
 username & password 兩個輸入框7Yk站長之家-易采站長站-Easck.Com
2.使用Druid數據庫連接池技術,操作mysql,day14數據庫中user表7Yk站長之家-易采站長站-Easck.Com
3.使用JdbcTemplate技術封裝JDBC7Yk站長之家-易采站長站-Easck.Com
4.登錄成功跳轉到SuccessServlet展示:登錄成功!用戶名,歡迎您7Yk站長之家-易采站長站-Easck.Com
5.登錄失敗跳轉到login.jsp展示:登錄失敗,用戶名或密碼錯誤,驗證碼錯誤7Yk站長之家-易采站長站-Easck.Com

二.分析

7Yk站長之家-易采站長站-Easck.Com

三.>

1. 創建項目,配置文件,導入jar包7Yk站長之家-易采站長站-Easck.Com

7Yk站長之家-易采站長站-Easck.Com

2. 創建數據庫環境7Yk站長之家-易采站長站-Easck.Com

CREATE DATABASE day17;
? ? USE day17;
? ? ? ? ? ? CREATE TABLE loginUSER( ? -- 創建表
? ? ? ? ? ? ? ? ?id INT PRIMARY KEY AUTO_INCREMENT,
? ? ? ? ? ? ? ? username VARCHAR(20) NOT NULL,
? ? ? ? ? PASSWORD VARCHAR(20) NOT NULL
);

3.創建前端login.jsp和css頁面7Yk站長之家-易采站長站-Easck.Com

<%@ page language="java" contentType="text/html; charset=UTF-8"
? ? pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-CN">
? <head>
? ? <meta charset="utf-8"/>
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
? ? <meta name="viewport" content="width=device-width, initial-scale=1"/>
? ? <title>管理員登錄</title>
?
? ? <!-- 1. 導入CSS的全局樣式 -->
? ? <link href="css/bootstrap.min.css" rel="stylesheet">
? ? <!-- 2. jQuery導入,建議使用1.9以上的版本 -->
? ? <script src="js/jquery-2.1.0.min.js"></script>
? ? <!-- 3. 導入bootstrap的js文件 -->
? ? <script src="js/bootstrap.min.js"></script>
? ? <script type="text/javascript">
? ? ? //切換驗證碼
? ? ? ?function refreshCode(){
?? ??? ? ?img=document.getElementById("vcode"); //獲取驗證碼圖片對象
?? ??? ? ?var time=new Date().getTime(); ?//時間戳
?? ??? ? ?img.src="${pageContext.request.contextPath }/checkcode?"+time;
?? ?}
? ? </script>
? </head>
? <body>
? ?? ?<div class="container" style="width: 400px;">
? ?? ??? ?<h3 style="text-align: center;">管理員登錄</h3>
? ? ? ? <form action="${pageContext.request.contextPath}/checklogin" method="post">
?? ? ? ? ?<div class="form-group">
?? ? ? ? ? ?<label for="user">用戶名:</label>
?? ? ? ? ? ?<input type="text" name="userName" class="form-control" id="user" placeholder="請輸入用戶名"/>
?? ? ? ? ?</div>
?? ? ? ? ?
?? ? ? ? ?<div class="form-group">
?? ? ? ? ? ?<label for="password">密碼:</label>
?? ? ? ? ? ?<input type="password" name="password" class="form-control" id="password" placeholder="請輸入密碼"/>
?? ? ? ? ?</div>
?? ? ? ? ?
?? ? ? ? ?<div class="form-inline">
?? ? ? ? ? ?<label for="vcode">驗證碼:</label>
?? ? ? ? ? ?<input type="text" name="verifycode" class="form-control" id="verifycode" placeholder="請輸入驗證碼" style="width: 120px;"/>
?? ? ? ? ? ?<a href="javascript:refreshCode()"><img src="${pageContext.request.contextPath }/checkcode" title="看不清點擊刷新" id="vcode"/></a>
?? ? ? ? ?</div>
?? ? ? ? ? <div style="color: red;">${log_msg}</div>
?? ? ? ? ?<hr/>
?? ? ? ? ?<div class="form-group" style="text-align: center;">
?? ? ? ? ? ?<input class="btn btn btn-primary" type="submit" value="登錄">
?? ? ? ? ? </div>
?? ? ??? ?</form>
?? ??? ?
?? ??? ?<!-- 出錯顯示的信息框 -->
?? ? ??? ?<div class="alert alert-warning alert-dismissible" role="alert">
?? ??? ? ?<button type="button" class="close" data-dismiss="alert" >
?? ??? ? ??? ?<span>&times;</span></button>
?? ??? ? ? <strong>${log_msg}</strong>
?? ??? ?</div>
? ?? ?</div>
? </body>
</html>

4.在domain包下創建類LoginUser7Yk站長之家-易采站長站-Easck.Com

package domain;
?
public class LoginUser {
?? ?private int id;
?? ?private String userName;
?? ?private String 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;
?? ?}
?? ?@Override
?? ?public String toString() {
?? ??? ?return "LoginUser [id=" + id + ", userName=" + userName + ", password=" + password + "]";
?? ?}
}

5.寫utils包下的工具類JDBCUtils ,主要是與mysql數據庫連接,創建數據庫連接池對象7Yk站長之家-易采站長站-Easck.Com

package cn.itcast.util;
?

?import com.alibaba.druid.pool.DruidDataSourceFactory;
?? ??? ??? ?
?import javax.sql.DataSource;
?import javax.xml.crypto.Data;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
?? ??? ??? ?
?? ??? ??? ?/**
?? ??? ??? ? * JDBC工具類 使用Durid連接池
?? ??? ??? ? */
?? ??? ??? ?public class JDBCUtils {
?? ??? ??? ?
?? ??? ??? ? ? ?private static DataSource ds ;
?? ??? ??? ?
?? ??? ??? ? ? ?static {
?? ??? ??? ?
?? ??? ??? ? ? ? ? ?try {
?? ??? ??? ? ? ? ? ? ? ?//1.加載配置文件
?? ??? ??? ? ? ? ? ? ? ?Properties pro = new Properties();
?? ??? ??? ? ? ? ? ? ? ?//使用ClassLoader加載配置文件,獲取字節輸入流
?? ??? ??? ? ? ? ? ? ? ?InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
?? ??? ??? ? ? ? ? ? ? ?pro.load(is);
?? ??? ??? ?
?? ??? ??? ? ? ? ? ? ? ?//2.初始化連接池對象
?? ??? ??? ? ? ? ? ? ? ?ds = DruidDataSourceFactory.createDataSource(pro);
?? ??? ??? ?
?? ??? ??? ? ? ? ? ?} catch (IOException e) {
?? ??? ??? ? ? ? ? ? ? ?e.printStackTrace();
?? ??? ??? ? ? ? ? ?} catch (Exception e) {
?? ??? ??? ? ? ? ? ? ? ?e.printStackTrace();
?? ??? ??? ? ? ? ? ?}
?? ??? ??? ? ? ?}
?? ??? ??? ?
?? ??? ??? ? ? ?/**
?? ??? ??? ? ? ? * 獲取連接池對象
?? ??? ??? ? ? ? */
?? ??? ??? ? ? ?public static DataSource getDataSource(){
?? ??? ??? ? ? ? ? ?return ds;
?? ??? ??? ? ? ?}
?? ??? ??? ?
?? ??? ??? ?
?? ??? ??? ? ? ?/**
?? ??? ??? ? ? ? * 獲取連接Connection對象
?? ??? ??? ? ? ? */
?? ??? ??? ? ? ?public static Connection getConnection() throws SQLException {
?? ??? ??? ? ? ? ? ?return ?ds.getConnection();
?? ??? ??? ? ? ?}
?? ??? ??? ?}

6.創建web層的checkcode的servlet,  用來顯示驗證碼的7Yk站長之家-易采站長站-Easck.Com

package web.servlet;
?
import java.io.IOException;
import java.util.Random;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
?
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
?
@WebServlet("/checkcode")
public class CheckCode extends HttpServlet{
?
?? ?/**
?? ? *?
?? ? */
?? ?private static final long serialVersionUID = 1L;
?
?? ?@Override
?? ?protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?this.doPost(req, resp);
?? ?}
?
?? ?@Override
?? ?protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
?? ??? ?int imgwidth=100;
?? ??? ?int imgheight=40;
?? ??? ?//1.創建圖片對象,在內存中圖片(驗證碼圖片對象)
?? ??? ?BufferedImage image=new BufferedImage(imgwidth,imgheight,BufferedImage.TYPE_INT_RGB); ?//也可以指定讀取image=imageIO.read(new file())
?? ??? ?//2.美化圖片
?? ??? ?Graphics g=image.getGraphics(); //獲得畫筆對象
?? ??? ?
?? ??? ?//設置畫筆顏色
?? ??? ?g.setColor(Color.pink);
?? ??? ?//在創建的圖片對象大小中填充矩形,顏色為上面設置的顏色,第一,二個參數是起始點的x,y,第三,四個參數是有多寬,有多高
?? ??? ?g.fillRect(0, 0, imgwidth, imgheight);
?? ??? ?
?? ??? ?//重新設置畫筆顏色
?? ??? ?g.setColor(Color.yellow);//畫框邊緣顏色
?? ??? ?//在image上畫邊框,第一,二個參數是起始點的x,y,第三,四個參數是有多寬,有多高,注意:邊框占一個像素,所以需要寬和高-1才能覆蓋全部
?? ??? ?g.drawRect(0, 0, imgwidth-1, imgheight-1);
?? ??? ?
?? ??? ?//隨機設置驗證碼的值
?? ??? ?String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
?? ??? ?Random random=new Random();
?? ??? ?StringBuilder sb=new StringBuilder();
?? ??? ?//隨機在image中寫字符串,第三,四個參數是畫的位置
?? ??? ?for(int i=1;i<5;i++) {
?? ??? ??? ?int index=random.nextInt(str.length()); ?//隨機選取字母字符
?? ??? ??? ?g.setFont(new Font("宋體", Font.PLAIN, 20)); ?//設置畫筆大小
?? ??? ??? ?sb.append(str.charAt(index));//將隨機驗證碼置于stringbuilder中
?? ??? ??? ?g.setColor(Color.blue); ?//畫筆顏色
?? ??? ? ? ?g.drawString(str.charAt(index)+"",imgwidth/5*i ,25); ? ?
?? ??? ?}
?? ??? ?
?? ??? ?//將驗證碼存儲與session對象中,用于loginservlet中的驗證碼驗證
?? ??? ?String session_code=sb.toString();
?? ??? ?req.getSession().setAttribute("session_code", session_code);
?? ??? ?
?? ??? ?//隨機畫干擾線,第一,二個參數是起始點的x,y,第三,四個參數是最后一個點的x,y
?? ??? ?int x1=0,y1=0,x2=0,y2=0;
?? ??? ?for(int i=0;i<=8;i++) { ?//畫8次線條
?? ??? ??? ?x1=random.nextInt(imgwidth);
?? ??? ??? ?y1=random.nextInt(imgheight);
?? ??? ??? ?x2=random.nextInt(imgwidth);
?? ??? ? ? ?y2=random.nextInt(imgheight);
?? ??? ? ? ?g.setColor(Color.gray);
?? ??? ? ? ?g.drawLine(x1, y1, x2, y2);
?? ??? ?}
?? ??? ?
?? ??? ?//3.圖片顯示在頁面上
?? ??? ?ImageIO.write(image, "jpg", resp.getOutputStream()); ?//將圖片寫入指定文件(第三個參數是指定的位置Fileoutpotstream(new File(""))
?? ?}
?? ?
?
}

7.創建web層的checklogin的servlet,用來響應用戶登錄的請求。主要是進行前端參數數據和UserDao進行交互7Yk站長之家-易采站長站-Easck.Com

7Yk站長之家-易采站長站-Easck.Com

代碼:7Yk站長之家-易采站長站-Easck.Com

package web.servlet;
?
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
?
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 javax.servlet.http.HttpSession;
?
import org.apache.commons.beanutils.BeanUtils;
?
import com.mchange.v2.codegen.bean.BeangenUtils;
?
import dao.UserDaoImpl;
import domain.LoginUser;
?
@WebServlet("/checklogin")
public class CheckLogin extends HttpServlet{
?
?? ?/**
?? ? *?
?? ? */
?? ?private static final long serialVersionUID = 1L;
?
?? ?@Override
?? ?protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?this.doPost(req, resp);
?? ?}
?
?? ?@Override
?? ?protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
?? ??? ?//1.設置編碼
?? ??? ?req.setCharacterEncoding("utf-8");
?? ??? ?//2.獲取用戶的請求
?? ??? ? ? LoginUser loginUser=new LoginUser();
?? ??? ? ?Map<String, String[]> pMap=req.getParameterMap();
?? ??? ?//3.使用BeanUtil封裝對象
?? ??? ? ?try {
?? ??? ??? ?BeanUtils.populate(loginUser, pMap);
?? ??? ?} catch (IllegalAccessException | InvocationTargetException e) {
?? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ??
?? ??? ? ?//4.現獲取前端填寫的驗證碼,比較驗證碼
?? ??? ? ? ?System.out.println(loginUser);
?? ??? ? ? ?String exc=req.getParameter("verifycode");//獲取前端用戶填寫的驗證碼
?? ??? ? ? ?HttpSession htp=req.getSession(); ?//獲取session
?? ??? ? ? ?String excode=(String) htp.getAttribute("session_code"); ?//獲取后端checkcode隨機驗證碼
?? ??? ? ? ?//為防止驗證碼重復使用,session中的session_code一旦獲得,就必須刪除
?? ??? ? ? ?htp.removeAttribute("session_code");
?? ??? ? ? ?if(excode!=null && excode.equalsIgnoreCase(exc)) {
?? ??? ? ? ??? ?//忽略字母大小寫,比較驗證碼
?? ??? ? ? ? ? ?//如果驗證碼正確,再比較用戶的用戶名和密碼
?? ??? ? ? ?//驗證碼正確
?? ??? ? ? ?//5.創建userDao對象
?? ??? ? ? ??? ? UserDaoImpl userDaoImpl=new UserDaoImpl(); ?//調用與數據庫的函數
?? ??? ??? ??? ? LoginUser lu=userDaoImpl.checkLoginUser(loginUser);
?? ??? ??? ? ? ?if(lu!=null) {
?? ??? ??? ? ? ??? ? ?//如果登錄成功
?? ??? ??? ? ? ??? ? ?//保存數據,用戶信息
?? ??? ??? ? ? ??? ? ?htp.setAttribute("user", lu); ?//在session中保存用戶的信息
?? ??? ??? ? ? ??? ? ?htp.setAttribute("username", lu.getUserName());//在session中存儲用戶名
?? ??? ??? ? ? ??? ? ?//重定向到success.jsp頁面
?? ??? ??? ? ? ??? ? ?resp.sendRedirect(req.getContextPath()+"/index.jsp");
?? ??? ??? ? ? ? ?}
?? ??? ??? ? ? ? ?else {//用戶名或密碼不正確
?? ??? ??? ? ? ??? ?req.setAttribute("log_msg", "用戶名或密碼錯誤"); ?//存儲錯誤信息,用request域存儲?
?? ??? ??? ? ? ??? ?//請求轉發,重新回到登錄頁面
?? ??? ??? ??? ??? ?req.getRequestDispatcher("/login.jsp").forward(req, resp);
?? ??? ??? ??? ?}?? ?
?? ??? ? ? ?}else {//驗證碼不正確
?? ??? ? ? ??? ?req.setAttribute("log_msg", "驗證碼錯誤"); ?//存儲錯誤信息,用request域存儲
?? ??? ? ? ??? ?req.getRequestDispatcher("/login.jsp").forward(req, resp); ?//請求轉發,重新回到登錄頁面
?? ??? ??? ?}
?? ??? ? ? ?
?? ??? ? ?
?? ??? ? ?
?? ?}
?? ?
?
}

 8.在dao層的,操作數據庫,查詢數據庫7Yk站長之家-易采站長站-Easck.Com
操作數據庫的UserDao接口:7Yk站長之家-易采站長站-Easck.Com

package dao;
?
import java.util.List;
?
import domain.User;
?
public interface UserDao {
? ? ?public List<User> findAll(); ?//抽象方法
? ? ?public LoginUser checkLoginUser( LoginUser loginUser);
}

操作數據庫的UserDaoImpl實現類:7Yk站長之家-易采站長站-Easck.Com

package dao;
?
import java.util.List;
?
import javax.xml.transform.Templates;
?
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
?
import domain.LoginUser;
import domain.User;
import utils.JDBCUtils;
?
public class UserDaoImpl implements UserDao{
? ? JdbcTemplate jdbcTemplate =new JdbcTemplate(JDBCUtils.getDataSource());
?? ?public List<User> findAll() {
?? ??? ?// 操作數據庫,查詢
?? ??? ?String sql="select * from user";
?? ??? ?List<User> users=jdbcTemplate.query(sql,new BeanPropertyRowMapper(User.class));
?? ??? ?return users;
?? ?}
?? ?public LoginUser checkLoginUser( LoginUser loginUser) {
?? ??? ?//查詢登錄用戶信息
?? ??? ?String sqlString="select* from loginuser where username=? and password=?";
?? ??? ?//System.out.println("111"+loginUser);
?? ??? ?try {
?? ??? ??? ?LoginUser lu=(LoginUser) jdbcTemplate.queryForObject(sqlString, new BeanPropertyRowMapper<LoginUser>(LoginUser.class)
?? ??? ??? ??? ??? ?,loginUser.getUserName(),loginUser.getPassword());
?? ??? ??? ?return lu;
?? ??? ?} catch (Exception e) {
?? ??? ??? ?// TODO: handle exception
?? ??? ??? ?e.printStackTrace();
?? ??? ??? ?return null;
?? ??? ?}?? ?
?? ?}
}

9.編寫success.jsp,在這里指的是index.jsp,對應在checklogin.java中7Yk站長之家-易采站長站-Easck.Com

<%@ page language="java" contentType="text/html; charset=UTF-8"
? ? pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-CN">
? <head>
? ? <meta charset="utf-8"/>
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
? ? <meta name="viewport" content="width=device-width, initial-scale=1"/>
? ? <title>首頁</title>
?
? ? <!-- 1. 導入CSS的全局樣式 -->
? ? <link href="css/bootstrap.min.css" rel="stylesheet">
? ? <!-- 2. jQuery導入,建議使用1.9以上的版本 -->
? ? <script src="js/jquery-2.1.0.min.js"></script>
? ? <!-- 3. 導入bootstrap的js文件 -->
? ? <script src="js/bootstrap.min.js"></script>
? ? <script type="text/javascript">
? ? </script>
? </head>
? <body>
? <div align="center">
? ?? ?<a
?? ? ?href="${pageContext.request.contextPath }/userListServlet" style="text-decoration:none;font-size:33px">查詢所有用戶信息
?? ?</a>
? </div>
? </body>
</html>

四.尾聲

效果圖:7Yk站長之家-易采站長站-Easck.Com

7Yk站長之家-易采站長站-Easck.Com

其他:7Yk站長之家-易采站長站-Easck.Com

login.jsp中form表單的action路徑的寫法7Yk站長之家-易采站長站-Easck.Com
            * 虛擬目錄+Servlet的資源路徑7Yk站長之家-易采站長站-Easck.Com

BeanUtils工具類,簡化數據封裝7Yk站長之家-易采站長站-Easck.Com
            * 用于封裝JavaBean的7Yk站長之家-易采站長站-Easck.Com

1. JavaBean:標準的Java類7Yk站長之家-易采站長站-Easck.Com

1). 要求:7Yk站長之家-易采站長站-Easck.Com
1. 類必須被public修飾7Yk站長之家-易采站長站-Easck.Com
2. 必須提供空參的構造器7Yk站長之家-易采站長站-Easck.Com
3. 成員變量必須使用private修飾7Yk站長之家-易采站長站-Easck.Com
4. 提供公共setter和getter方法7Yk站長之家-易采站長站-Easck.Com

2). 功能:封裝數據7Yk站長之家-易采站長站-Easck.Com

最后:用戶登錄的模塊功能全部結束!7Yk站長之家-易采站長站-Easck.Com

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持易采站長站。7Yk站長之家-易采站長站-Easck.Com

如有侵權,請聯系QQ:279390809 電話:15144810328

相關文章

  • jsp實現用戶自動登錄功能

    jsp實現用戶自動登錄功能

    理解并掌握Cookie的作用以及利用cookie實現用戶的自動登錄功能,實現下圖效果 當服務器判斷出該用戶是首次登錄的時候,會自動跳轉到登錄界面等待用戶登錄,并填入相關信息。通過設
    2020-04-28
  • JSP動態網頁開發原理詳解

    JSP動態網頁開發原理詳解

    一、什么是JSP?  JSP全稱是Java Server Pages,它和servle技術一樣,都是SUN公司定義的一種用于開發動態web資源的技術?! SP這門技術的最大的特點在于,寫jsp就像在寫html,但它相比html而言,html只能為用戶提供靜態數據,而Jsp技術允許在頁面中嵌套java代碼,為用戶提供動態數據。二、JSP原理2.1、Web服務器是如何調用并執行一個jsp頁面的
    2020-07-24
  • JSP動態網頁開發技術概述

    JSP動態網頁開發技術概述

      在動態web項目的開發中,經常需要動態生成HTML內容(如系統中的當前在線人數需要動態生成)。如果使用Servlet實現HTML頁面數據的統計,則需要使用大量的輸出語句。同時,如果靜態內容和動態內容混合在一起,那么也將導致程序非常臃腫。為了客服Servlet的這些缺點,Oracle(Sun)公司推出了JSP技術。1.JSP概述  JSP(Java Server Pages)是建立在Servle
    2020-07-24
  • 如何在jsp界面中插入圖片

    如何在jsp界面中插入圖片

    最近初學Java Web遇到一個問題,就是在jsp中沒法顯示圖片。在網上搜索了許多內容,基本都是說路徑問題,因為剛開始是憑著自己的一點半吊子html經驗寫的,而且我自認為不可能寫錯路徑,但后來發現確實是路徑出現了一些問題。(由此可見不要過分相信自己的半吊子經驗)首先我們先要重新來認識下相對路徑和絕對路徑。https://zhidao.baidu.com/question
    2020-08-05
  • 驍龍678對比麒麟980哪個值得入手

    驍龍678對比麒麟980哪個值得入手

    大家都知道,麒麟980是一款已經有點年頭的旗艦級別芯片了,與前代對比,進步很大,但也是有點年頭的處理器了,這款處理器和剛出的高通驍龍驍龍678對比一下的話,這兩者又有多少的差距呢,感興趣的朋友不要錯過了?!竟に嚒框旪?78:采用了11nm的工藝制程可以減少用戶的能耗。麒麟980:7nm制作工藝,是目前最為成熟的芯片制作工藝,可以為用戶帶來更優享受【CPU】驍龍678:采用2+6的八核架構,全新的K
    2020-12-16
  • 銳龍7 5800X和i9-10900K哪款好 銳龍7 5800X和i9-10900K區別對比

    銳龍7 5800X和i9-10900K哪款好 銳龍7 5800X和i9-10900K區別對比

    銳龍7 5800X和i9-10900K哪款好?哪款值得入手?下面小編帶來銳龍7 5800X和i9-10900K區別對比,希望對大家有所幫助。銳龍7 5800X和i9-10900K區別對比:一、前言:為什么網游會更需求處理器性能!也許有很多同學的“高配”電腦在玩單機游戲的時候,將畫面調到最高設置下都能獲得非常高的幀率,而在玩網絡游戲的時候幀率會暴跌,特別是在大型團隊副本或者是
    2020-12-17
  • 驍龍678對比驍龍845哪個值得買 驍龍678對比驍龍845評測

    驍龍678對比驍龍845哪個值得買 驍龍678對比驍龍845評測

    大家都知道,驍龍678是一款新出的芯片,看制程是入門的級別的,但是千萬別小看現在新出的中低端芯片,有的是能打以前旗艦的,今天就給大家介紹一下驍龍678和驍龍845的參數對比,感興趣的朋友不要錯過了?!竟に嚒框旪?78:采用11nm的制作工藝驍龍845:采用的是10nm的制作工藝【CPU】驍龍678:為用戶提供2*A76(2.2GHz)+6*A55(1.7GHz)的8核處理器,為用戶提供最優的手機C
    2020-12-17
  • CPU天梯圖2021年3月最新版 CPU性能排行天梯圖2021

    CPU天梯圖2021年3月最新版 CPU性能排行天梯圖2021

      顯卡是電腦中非常熱門的硬件之一,在很多時候顯卡的重要性高于CPU,對于小白來說需要通過顯卡性能參數的比對來選購顯卡,通過顯卡天梯圖來對比顯卡型號之間的性能差異,一目了然非常直觀。CPU天梯圖2021年3月最新版 CPU性能排行天梯圖2021:  顯卡之間如何對比性能好壞?  對于目前獨立顯卡市場中,我們可選N卡和A卡,N卡在市場份額占比大,而A卡市場份額小一些,同級別的顯卡,A卡更便宜,性價比
    2021-03-01
色七七影院_香港三级台湾三级在线播放_男人放进女人阳道猛进猛出