網站註冊登入登出功能實現
回到學校已經有三個星期了,那也有三個星期沒有去寫部落格了,今天就對之前學習的內容進行一個小的專案回顧一下吧。
今天要實現的專案是某網站裡面的註冊登入登出三個功能。
開發環境:Eclipse ,tomcat8.0,jdk1.8,mysql5.5。
匯入的jar包:commons-beanutils-1.8.3.jar,commons-logging-1.1.1.jar,jstl.jar,mysql-connector-java-5.1.26-bin.jar,standard.jar。
做什麼之前都需要去了解清楚需求。
1註冊:使用者輸入使用者名稱(3~8位字母組成),密碼:(必須輸入,3~8位數字組成),重複密碼:(必須和密碼一致),郵箱:(必須輸入,且要符合郵箱的格式),出生日期:(必須輸入,格式2001-03-18)。
2登入:輸入使用者名稱和密碼,正確後會跳轉會主頁,並顯示使用者名稱在主頁上。
3登出:點選登出後主頁上不在顯示使用者名稱,並出現登入註冊按鈕。
那我們現在去程式設計吧。首先是寫前端的程式碼:
index.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
%>
<!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>XXX</title>
<style type="text/css">
//編寫樣式後面的工作
*{margin:0;
padding:0;
}
body{
font-size:12px;
font-family:"微軟雅黑";
}
a{color:blue;
text-decoration: none;
}
a:HOVER {
color:red;
}
</style>
</head>
<body>
XX網站<br/>
<c:if test="${sessionScope.user ==null }">
<a href="<%=path %>/login.jsp">登入</a>
<a href="<%=path %>/regist.jsp">註冊</a>
</c:if>
<c:if test="${sessionScope.user !=null }">
歡迎<a href="">${sessionScope.user.username}</a>
<a href="${pageContext.request.contextPath }/servlet/LogoutServlet">登出</a>
</c:if>
</body>
</html>
regist.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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>XXX</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/servlet/RegistServlet" method="post">
<table border="1">
<tr>
<th>使用者名稱:(必須輸入,3~8位字母組成)</th>
<td>
<input type="text" id="username" name="username" value="${formbean.username }"/>${formbean.errors.username}
</td>
</tr>
<tr>
<th>密碼:(必須輸入,3~8位數字組成)</th>
<td>
<input type="password" name="password" value="${formbean.password}"/>${formbean.errors.password}
</td>
</tr>
<tr>
<th>重複密碼:(必須和密碼一致)</th>
<td>
<input type="password" name="repassword" value="${formbean.repassword}"/>${formbean.errors.repassword}
</td>
</tr>
<tr>
<th>郵箱:(必須輸入,且要符合郵箱的格式)</th>
<td>
<input type="text" name="email" value="${formbean.email}"/>${formbean.errors.email}
</td>
</tr>
<tr>
<th>出生日期:(必須輸入,格式2001-03-18)</th>
<td>
<input type="text" name="birthday" value="${formbean.birthday}" />${formbean.errors.birthday}
</td>
</tr>
</table>
<input type="submit" value="註冊" />
</form>
</body>
</html>
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>
<form action="${pageContext.request.contextPath}/servlet/LoginServlet" method="post">
<table >
<tr>
<th>賬號:</th>
<td>
<input type="text" name="username">
</td>
</tr>
<tr>
<th>密碼:</th>
<td>
<input type="text" name="password">
</td>
</tr>
</table>
<input type="submit" value="登入"/>
</form>
</body>
</html>
下面展示一下包結構:
下面是後端程式碼:
top.wyxbs.domain包下的User.java
/**
* 使用者類
* @author chenjingbin
*
*/
public class User implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 使用者名稱
*/
private String username;
/**
* 密碼
*/
private String password;
/**
* 郵箱
*/
private String email;
/**
* 出生日期
*/
private Date birthday;
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;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", email=" + email + ", birthday=" + birthday
+ "]";
}
}
top.wyxbs.util包下的類
/**
*
* 資料庫幫助類
* @author chenjingbin
* @since 2017/3/16
*/
public class DBHelper {
private final static String URL = "jdbc:mysql://localhost:3306/wyxbs";
private final static String DRIVER = "com.mysql.jdbc.Driver";
private final static String USER = "wyxbsadmin";
private final static String PASSWORD = "111111";
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* 獲取Connection物件
* @return Connection
*/
public static Connection getConnection() {
Connection connection = null;
try {
connection = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return connection;
}
/**
* 關閉流
* @param connection
* @param statement
* @param resultSet
* @throws SQLException
*/
public static void streamClose(Connection connection, Statement statement,
ResultSet resultSet) throws SQLException {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
}
}
//--------------------------------------------------
public class WebUtil {
/**
* 使用BeanUtils完成Javabean物件
* @param request
* @param class1 類的物件
* @return
*/
public static <T> T fillBean(HttpServletRequest request,Class<T> class1){
T t = null ;
try {
t = class1.newInstance();
BeanUtils.populate(t, request.getParameterMap());
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return t;
}
}
top.wyxbs.dao包下的類:
import top.wyxbs.domain.User;
public interface UserDao {
/**
* 儲存使用者
* @param user 使用者物件
*/
void save(User user);
/**
* 查詢使用者根據使用者名稱去找
* @param name 使用者名稱
* @return 返回使用者物件
*/
User findUserByName(String name);
/**
* 根據賬號密碼去查詢使用者
* @param name 使用者名稱
* @param password 密碼
* @return 返回符合的使用者物件
*/
User findUser(String name ,String password);
}
//-------------------------------------------------
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import top.wyxbs.domain.User;
import top.wyxbs.util.DBHelper;
public class UserDaoImpl implements UserDao {
@Override
public void save(User user) {
// TODO Auto-generated method stub
Connection connection = null;
PreparedStatement prepareStatement = null ;
String sql = "insert into t_user (username ,password,email,birthday) values(?,?,?,? );";
try {
connection = DBHelper.getConnection();
//需要去轉換java.util.date 轉換為java.sql.date
// Date date =new Date(user.getBirthday().getTime());
//System.out.println(date);
prepareStatement = connection.prepareStatement(sql);
prepareStatement.setString(1, user.getUsername());
prepareStatement.setString(2, user.getPassword());
prepareStatement.setString(3, user.getEmail());
prepareStatement.setDate(4, new Date(user.getBirthday().getTime()));
prepareStatement.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
DBHelper.streamClose(connection, prepareStatement, null);
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("關閉流出現問題");
}
}
}
@Override
public User findUserByName(String name) {
// TODO Auto-generated method stub
Connection connection = null;
PreparedStatement prepareStatement = null;
ResultSet resultSet = null;
String sql="select username,password,email,birthday from t_user where username=?";
try {
connection = DBHelper.getConnection();
prepareStatement = connection.prepareStatement(sql);
prepareStatement.setString(1, name);
resultSet = prepareStatement.executeQuery();
User user = new User();
while(resultSet.next()){
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
user.setEmail(resultSet.getString("email"));
user.setBirthday(new java.util.Date(resultSet.getDate("birthday").getTime()));
return user;
}
return null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
DBHelper.streamClose(connection, prepareStatement, resultSet);
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("關閉流出錯了");
}
}
return null;
}
@Override
public User findUser(String name, String password) {
// TODO Auto-generated method stub
Connection connection = null;
PreparedStatement prepareStatement = null;
ResultSet resultSet = null;
String sql="select username,password,email,birthday from t_user where username=? and password=?";
try {
connection = DBHelper.getConnection();
prepareStatement = connection.prepareStatement(sql);
prepareStatement.setString(1, name);
prepareStatement.setString(2, password);
resultSet = prepareStatement.executeQuery();
User user = new User();
while(resultSet.next()){
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
user.setEmail(resultSet.getString("email"));
user.setBirthday(new java.util.Date(resultSet.getDate("birthday").getTime()));
return user;
}
return null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
DBHelper.streamClose(connection, prepareStatement, resultSet);
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("關閉流出錯了");
}
}
return null;
}
}
top.wyxbs.exception包下的類:
/**
* 使用者已經存在異常類
* @author chenjingbin
*
*/
public class UserExistException extends Exception {
/**
*
*/
private static final long serialVersionUID = 1L;
public UserExistException() {
}
public UserExistException(String message) {
super(message);
}
public UserExistException(Throwable cause) {
super(cause);
}
public UserExistException(String message, Throwable cause) {
super(message, cause);
}
}
top.wyxbs.service包下的類:
import top.wyxbs.domain.User;
import top.wyxbs.exception.UserExistException;
public interface BusinessService {
/**
* 完成使用者資訊註冊
* @param user 使用者資訊
* @throws UserExistException 使用者已經存在
*/
void regist(User user) throws UserExistException;
/**
* 完成使用者登入
* @param username 使用者名稱
* @param password 密碼
* @return 如果使用者名稱或密碼不正確,返回null
*/
User login(String username,String password);
}
//--------------------------------------------------
import top.wyxbs.dao.UserDao;
import top.wyxbs.dao.UserDaoImpl;
import top.wyxbs.domain.User;
import top.wyxbs.exception.UserExistException;
public class BusinessServiceImpl implements BusinessService {
private UserDao userDao = new UserDaoImpl();
@Override
public void regist(User user) throws UserExistException {
// TODO Auto-generated method stub
User findUserByName = userDao.findUserByName(user.getUsername());
if(findUserByName!=null){
throw new UserExistException(user.getUsername()+"已經存在");
}
userDao.save(user);
}
@Override
public User login(String username, String password) {
// TODO Auto-generated method stub
return userDao.findUser(username, password);
}
}
//------------------------------------------------------
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
/**
* 使用者註冊時臨時產生的註冊使用者類
* @author chenjingbin
*
*/
public class UserRegistFormBean {
private String username;
private String password;
private String repassword;
private String email;
private String birthday;
//存放錯誤資訊
private Map<String , String > errors = new HashMap<String ,String >();
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;
}
public String getRepassword() {
return repassword;
}
public void setRepassword(String repassword) {
this.repassword = repassword;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public Map<String, String> getErrors() {
return errors;
}
/**
* 驗證資訊,伺服器端
* @return
*/
public boolean validate(){
//只要不滿足要求的,就像errors中放訊息
//使用者名稱必須輸入,3~8位字母組成
if(username==null||username.equals("")){
errors.put("username", "請輸入使用者名稱");
}else{
if(!username.matches("[a-zA-Z]{3,8}")){
errors.put("username", "使用者名稱不符合要求");
}
}
//密碼必須輸入,3~8位數字組成
if(password == null || password.equals("")){
errors.put("password", "請輸入密碼");
}else{
if (!password.matches("\\d{3,8}")) {
errors.put("password", "密碼不符合要求");
}
}
//重複密碼必須和密碼一致
if(repassword == null || repassword.equals("")){
errors.put("repassword", "請輸入密碼");
}else{
if(!password.equals(repassword)){
errors.put("repassword", "兩次輸入的密碼不對");
}
}
//郵箱必須輸入,且要符合郵箱的格式
if(email == null || email .equals("")){
errors.put("email", "請輸入郵箱");
}else{
if (!email.matches("\\b^['_a-z0-9-\\+]+(\\.['_a-z0-9-\\+]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2}|aero|arpa|asia|biz|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|nato|net|org|pro|tel|travel|xxx)$\\b")) {
errors.put("email", "郵箱格式不符合");
}
}
if(birthday == null || birthday .equals("")){
errors.put("birthday", "請輸入生日");
}else{
try{
new DateLocaleConverter().convert(birthday);
}catch (Exception e) {
errors.put("birthday", "請輸出正確的日期");
}
}
return errors.isEmpty();
}
}
在寫後端程式碼的時候寫完一個小功能程式碼都需要去測試一下才行,於是有一個test包。
public class BusinessServiceImplTest {
private BusinessService businessService = new BusinessServiceImpl();
@Test
public void registTest(){
User user = new User();
user.setUsername("abc");
user.setPassword("456");
user.setEmail("[email protected]");
user.setBirthday(new Date());
try {
businessService.regist(user);
} catch (UserExistException e) {
// TODO Auto-generated catch block
System.out.println("已經存在");
}
}
@Test
public void loginTest(){
User login = businessService.login("abc", "456");
System.out.println(login);
}
}
//-------------------------------------------------------
import java.util.Date;
import org.junit.Test;
import top.wyxbs.dao.UserDao;
import top.wyxbs.dao.UserDaoImpl;
import top.wyxbs.domain.User;
/**
* 測試userDaoImpl類
* @author chenjingbin
*
*/
public class UserDaoImplTest {
@Test
public void saveTest(){
//測試儲存使用者是否成功
User user = new User();
user.setUsername("小黃");
user.setPassword("123");
user.setEmail("qewrer");
user.setBirthday(new Date());
UserDao userDao =new UserDaoImpl();
userDao.save(user);
}
@Test
public void findUserByNameTest(){
UserDao userDao =new UserDaoImpl();
User findUserByName = userDao.findUserByName("小黃");
System.out.println(findUserByName.toString());
}
@Test
public void findUserTest(){
UserDao userDao =new UserDaoImpl();
User findUserByName = userDao.findUser("小黃","123");
System.out.println(findUserByName.toString());
}
}
top.wyxbs.web.controller包下的類:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import top.wyxbs.domain.User;
import top.wyxbs.service.BusinessService;
import top.wyxbs.service.BusinessServiceImpl;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private BusinessService s = new BusinessServiceImpl();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
User login = s.login(username, password);
if(login != null){
request.getSession().setAttribute("user", login);
response.getWriter().write("登入成功,2秒轉向主頁");
response.setHeader("Refresh", "2;URL="+request.getContextPath());
}else{
response.getWriter().write("錯誤的使用者名稱或密碼,2秒轉向登入頁面");
response.setHeader("Refresh", "2;URL="+request.getContextPath()+"/login.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
//---------------------------------------------------
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author chenjingbin
*
*/
public class LogoutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
request.getSession().removeAttribute("user");
out.write("登出成功");
response.setHeader("Refresh", "2;URL="+request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
//-----------------------------------------------------
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import top.wyxbs.domain.User;
import top.wyxbs.exception.UserExistException;
import top.wyxbs.service.BusinessService;
import top.wyxbs.service.BusinessServiceImpl;
import top.wyxbs.service.UserRegistFormBean;
import top.wyxbs.util.WebUtil;
public class RegistServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private BusinessService s = new BusinessServiceImpl();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//首先是考慮編碼問題
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//
UserRegistFormBean fillBean = WebUtil.fillBean(request, UserRegistFormBean.class);
//說明資訊不符合
if(!fillBean.validate()){
request.setAttribute("formbean", fillBean);
request.getRequestDispatcher("/regist.jsp").forward(request, response);
return ;
}
User user = new User();
try {
//註冊轉換器
ConvertUtils.register(new DateLocaleConverter(), Date.class);
BeanUtils.copyProperties(user, fillBean);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
s.regist(user);
response.setHeader("Refresh", "2:URL="+request.getContextPath()+"/index.jsp");
response.getWriter().write("註冊成功");
} catch (UserExistException e) {
// TODO Auto-generated catch block
//回顯資料
fillBean.getErrors().put("username", "使用者已經存在");
request.setAttribute("formbean", fillBean);
request.getRequestDispatcher("/regist.jsp").forward(request, response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
還有一個檔案那就是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_2_5.xsd" version="2.5">
<display-name></display-name>
<servlet>
<servlet-name>RegistServlet</servlet-name>
<servlet-class>top.wyxbs.web.controller.RegistServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>top.wyxbs.web.controller.LoginServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>LogoutServlet</servlet-name>
<servlet-class>top.wyxbs.web.controller.LogoutServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RegistServlet</servlet-name>
<url-pattern>/servlet/RegistServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/servlet/LoginServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LogoutServlet</servlet-name>
<url-pattern>/servlet/LogoutServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
最後執行圖:
相關推薦
網站註冊登入登出功能實現
回到學校已經有三個星期了,那也有三個星期沒有去寫部落格了,今天就對之前學習的內容進行一個小的專案回顧一下吧。 今天要實現的專案是某網站裡面的註冊登入登出三個功能。 開發環境:Eclipse ,tomcat8.0,jdk1.8,mysql5.5。 匯入的ja
用列表做一個登入系統 功能實現:註冊與登入系統
list1=[]# 儲存使用者名稱 list2=[] #儲存密碼 while True: print('歡迎來到登入頁面') print('1:登入\n2:註冊\n3:退出') xz = int(input('請選擇:')) if xz ==
基於jsp+servlet的javaweb實現最基本的使用者註冊登陸登出功能
本案例的技術選型主要是jsp+servlet+JavaBean,採用三層架構的分層思想與MVC設計模式結合進行規範開發。 採用的資料庫是MySQL,並且搭配資料來源連線池DBCP和apache官方提供的DBUtils進行資料庫連線開發。 目的是為了簡化SQL連線編碼,並且
網站註冊登入大概步驟(網站是怎樣通過cookie記住使用者的)
註冊: 將使用者填寫的賬號和密碼儲存在資料庫中(其中包括去重操作和密碼加密操作) 登入: 將使用者填寫的賬號和密碼與資料庫進行比對,如果資料庫中存在同樣的賬號和密碼,那麼在響應頭中設定Set-Cookie值,標誌該使用者是通過登入步驟進入首頁的 這樣每次使用者訪問同源網址時請求頭中都
【django4】簡單註冊/登陸/登出功能
Python版本3.5,django版本1.10 1 新建專案 django-admin.py startproject website1 2 啟動伺服器,檢視是否正常 manage.py runserver 3 進入工程website1
電商專案day09(網站前臺之廣告功能實現&優化策略)
今日目標: 1、完成入口網站的搭建 2、完成運營商廣告後臺管理 3、輪播圖廣告展示 4、spring data redis 整合到專案 5、redis快取優化廣告業務 一、入口網站業務分析 1.首先廣告業務: 第一:吸引使用者 第二:運營商
【java小程式實戰】小程式登出功能實現
小程式實戰中,如何實現程式的登出功能呢?後端程式碼只要刪除使用者的redi快取即可。小程式端在成功返回訊息後,進行登陸頁面的跳轉。 文章目錄 小程式的mine.wxml程式碼 mine.wxss程式碼 登出事件
javaweb登陸,登出功能實現的一般步奏
1.在UserAction中新增三個方法,如下: /** 登陸頁面 */public String loginUI() throws Exception {return "loginUI";}/** 登陸*/public String login() throws E
一個常用網站點贊動畫功能實現
/***點贊實現***/ .dianzan{ position:relative; width:15px; height:14px;margin-right:5px; display:inline-block; vertical-align:-1px; } .dianzan
PHP實現註冊登入,並實現註冊時動態檢查使用者名稱是否可用
用PHP實現註冊登入,原理就是註冊時往資料庫中插入使用者資訊比如使用者名稱和密碼等,登陸即驗證輸入的賬號密碼在資料庫中是否存在。 1、註冊介面html程式碼: <html> <head> <meta http-equiv="Content-
網站註冊登入等簡訊驗證碼
現在隨著時代的發展,許多網站的註冊,或者登入都和手機號碼關聯在一起,這樣也方便了我們記住賬號,下面我就來說一下怎麼用php發簡訊,這個是解除安裝(lavarel)框架的。 這裡給大家介紹一個平臺--雲信使,註冊後大家可以獲得免費簡訊10條,(這裡告訴大家個祕密,如果不夠用還
基於SSH2框架AspectJ的登入登出日誌實現
AOP切面是一個非常不錯的特性,為我們帶來了一種新的程式設計方式,對程式碼的無侵入性是它最大的特點。像上篇我們用到的Struts2攔截器就是AOP的一個典型運用。從Spring的低版本開始就能夠實現切面功能,但是非常麻煩,不過當Spring升級到2.0之後,這一情況就徹底改變了。運用JDK 5.0支援的註解
基於許可權安全框架Shiro的登入驗證功能實現
目前在企業級專案裡做許可權安全方面喜歡使用Apache開源的Shiro框架或者Spring框架的子框架Spring Security。 Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼學和會話管理。 Shiro框架具有輕便
視訊網站開發:Ajax非同步實現已登入使用者收藏視訊的功能
已登入使用者收藏視訊的功能是各大影視網站都具備的一項功能,也叫做加入看單或加入我喜歡。這一項功能主要是為了方便已經登入的使用者可以收藏自己喜歡的視訊,在想看的時候可以直接到自己的個人介面中觀看這些自己收藏過的視訊,極大地避免了使用者因忘記視訊名
基於java的微信小程式的實現(二)登入,註冊,登出介面的實現
1.開發工具以及相關環境的配置 1.首先關於IDE,前端小程式端採用的是微信官方的微信開發者工具,後端使用的是idea(idea是真的智慧,再也不想回去eclipse了呢),關於前端的一些程式碼,主要是參照微信官方的API進行開發的,整體的檔案結構也和js,css,html也很相似。
58同城網站在登入後,最近幾天都不需要重新登入,這個功能是如何實現的
這個最典型的就是用到了cookie技術。 Cookie,有時也用其複數形式Cookies,指某些網站為了辨別使用者身份、進行session跟蹤而儲存在使用者本地終端上的資料(通常經過加密)。定義於RFC2109和2965都已廢棄,最新取代的規範是RFC62
JAVA實現簡單的Session登入,登出功能
session常常用來儲存使用者的登入資訊。那麼伺服器是怎麼來實現的呢?這裡我簡單模擬一下。 第一步,編寫登入主頁: <!DOCTYPE html> <html> <head> <title>登陸頁面</ti
Java實現貪吃蛇遊戲(含賬號註冊登入,排行榜功能)
原文在部落格園:https://www.cnblogs.com/leixiao-/p/9984836.html 這是我第一次工程實踐的作業,選題很多,但我只對其中的遊戲開發感興趣,可遊戲就兩三個型別,最終還是選擇了貪吃蛇。其實就貪吃蛇本身的程式碼實現還算是比較簡單的,可是實踐要求程式碼行達到
javaweb簡單的登入註冊功能實現
下面是使用者登入註冊流程圖 登陸介面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPat
javaWeb註冊,登陸,登出功能的實現
一:註冊頁面:regist.jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUB