精华内容
下载资源
问答
  • javaWeb前后台交互

    2018-06-08 12:20:35
    javaWeb前后台交互(Jsp+Servlet+mysql);javaWeb前后台交互(Jsp+Servlet+mysql)
  • KTV前后台交互

    2018-03-16 14:06:42
    北大青鸟 KTV项目前后台交互 SQLserver数据库 C# .NET
  • mock.js模拟前后台交互

    2020-10-16 16:02:07
    主要为大家详细介绍了mock.js模拟前后台交互的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 本篇文章主要介绍了django实现前后台交互实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 下面小编就为大家分享一篇Layui前后台交互数据获取java实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • JavaWeb前后台交互项目

    2018-10-26 11:25:35
    java web 项目内容,主要运用OOP处理,帮助心学着熟悉Web开发逻辑、与数据库交互、前后台交互
  • javaWeb前后台交互,里面只有登录一个功能,主要是MVC模式下前后台连接。针对刚刚学习完JSP+Mysql+Servlet,想连接前后台人群。大神请绕道。
  • 今天小编就为大家分享一篇layui框架与SSM前后台交互的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • ext前后台交互实例

    2012-05-23 23:56:56
    ext前后台交互实例,主要以json形式传递数据。
  • javaWeb前后台交互(二)

    千次阅读 多人点赞 2018-07-06 21:22:29
    接上一篇javaWeb前后台交互。链接:https://blog.csdn.net/blackplus28/article/details/80603863 一、MVC思想 责任分离思想. M:Model,数据模型对象.(JavaBean) V:View,视图界面.(JSP,Panel,Window) C:...

    接上一篇javaWeb前后台交互。链接:https://blog.csdn.net/blackplus28/article/details/80603863

    一、MVC思想

    责任分离思想.

    M:Model,数据模型对象.(JavaBean)

    V:View,视图界面.(JSP,Panel,Window)

    C:Controller,控制器(Servlet)

     

    本次代码采用:Tomcat7.57  JDK 1.8  Eelipse编写  数据库:Mysql

     

    二、项目结构(MVC模式)

    自己创建动态项目,然后再建好包。

    1、编写工具类(JdbcUtil)

    package util;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Properties;
    
    //  连接数据库
    public class JdbcUtil {
    	private static Properties p = new Properties();
    	static {
    		try {
    			ClassLoader loader = Thread.currentThread().getContextClassLoader();
    			// 从classpath的跟路径去寻找db.properties
    			InputStream inStream = loader.getResourceAsStream("db.properties");
    			p.load(inStream); // 加载
    		} catch (IOException e) {
    			throw new RuntimeException("加载classpath路径下的db.properties文件失败", e);
    		}
    		// 1加载注册驱动
    		try {
    			Class.forName(p.getProperty("DriverName"));
    			System.out.println("加载数据驱动正常");
    		} catch (Exception e) {
    			throw new RuntimeException("数据库驱动加载失败", e);
    		}
    	}
    	// 返回创建好的Connection对象,用静态的这种方式应该把构造器私有化起来
    	public static Connection getConn() {
    		try {
    			System.out.println("连接数据库正常");
    			// 2获取连接对象
    			return DriverManager.getConnection(p.getProperty("url"), p.getProperty("username"),
    					p.getProperty("password"));
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		throw new RuntimeException("数据库连接异常");
    	}
    	// 5):释放资源
    	public static void close(Connection conn, Statement st, ResultSet re) {
    		try {
    			if (re != null) {
    				re.close();
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if (st != null) {
    					st.close();
    				}
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    			try {
    				if (conn != null) {
    					conn.close();
    				}
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    	}
    	// 防止先创建对象,然后再调用方法。不让外界创建,直接用类名调用
    	private JdbcUtil() {
    		}
    
    }

    2、domain(model)层

    package domain;
    
    /**
     *   用户
     * @author
     *
     */
    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 User(int id, String username, String password) {
    		super();
    		this.id = id;
    		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;
    	}
    	@Override
    	public String toString() {
    		return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
    	}
    }
    

     

    3、写dao层

     

    接口层:

    package dao;
    
    import domain.User;
    
    /**
     *  登录
     * @author 
     *
     */
    public  interface  IUserDao {
    	/**
    	 * 用户登录 
    	 * @param username
    	 * @param password
    	 * @return
    	 */
    	public  User loginUser(String username,String password);
    }
    
    

    实现层:

    package dao.impl;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import dao.IUserDao;
    import domain.User;
    import util.JdbcUtil;
    
    public class UserDaoImpl implements IUserDao {
    	//  登录
    	@Override
    	public User loginUser(String username, String password) {
    		String sql = "SELECT * FROM t_user WHERE username=? AND password=?";
    		Connection conn = null;
    		PreparedStatement ps = null;
    		ResultSet rs = null;
    		 try {
    			conn = JdbcUtil.getConn();
    			ps = conn.prepareStatement(sql);
    			ps.setString(1, username);
    			ps.setString(2, password);
    			rs = ps.executeQuery();
    			if (rs.next()) {
    				User user = new User();
    				user.setUsername(rs.getString("username"));
    				user.setPassword(rs.getString("password"));
    				return user;
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    }
    

    4、service接口和实现层

    接口:

    package service;
    
    import domain.User;
    
    public interface IUserService {
    	/**
    	 * 登录
    	 * @param username
    	 * @param password
    	 * @return
    	 */
    	public  User loginUser(String username,String password);
    }
    

    实现层:

    package service.impl;
    
    import dao.IUserDao;
    import dao.impl.UserDaoImpl;
    import domain.User;
    import service.IUserService;
    
    public class UserServiceImpl implements IUserService{
    	private IUserDao dao = new UserDaoImpl();
    	@Override
    	public User loginUser(String username, String password) {
    		
    		return dao.loginUser(username, password);
    	}
    }
    

    5、controller层

    package 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 domain.User;
    import service.IUserService;
    import service.impl.UserServiceImpl;
    
    public class UserServlet  extends HttpServlet{
    	private static final long serialVersionUID = 1L;
    	private IUserService userService = new UserServiceImpl();
    	
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		String userName = req.getParameter("username");
    		String password = req.getParameter("password");
    		
    		User user = userService.loginUser(userName, password);
    		if (user != null) {
    			resp.sendRedirect("login_success.jsp");
    		}else {
    			resp.sendRedirect("login_fail.jsp");
    		}
    	}
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		this.doPost(req, resp);
    	}
    }
    

    6、这个时候记得创建resource文件夹,并创建db.properties (你只需把javaweb换成你的数据库名称,两个root分别是数据库账户和密码,自行修改就好)

    #key=value
    
    DriverName=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/javaweb
    username=root
    password=root

     

    7、创建三个JSP(view层)

     

    我只贴login.jsp代码,登录成功和失败页面里面都是一句话,仅仅为做跳转看效果。

    其实完全用把结果存放到session里面,在login.jsp里面写el表达式接受信息也可以看出效果,但因为是初学者,还是多写几个页面看的直观。

    <%@ 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>
    </head>
    <body>
    	<!--登陆框开始-->
    	<form action="UserServlet" method="post">
    		用户名:<input type="text" class="inputName" name="username"  placeholder="用户名"><br />
    		 
    		 密  码:<input type="password" name="password" placeholder="密码"><br />
    		<button type="submit" >登录</button>
    	</form>
    </body>
    </html>

    数据库就不放了,里面就id,username,password三个字段。

    效果图:

    登录成功:

    登录失败:

     

    三、总结

      写到这里按照MVC模式进行交互已完成。

    如果你完全复制我的代码,还报错,这个时候很有可能是环境问题,因为我都是测试了好几遍完全正确才截图的,有问题欢迎留言讨论。

     

    如果有不同看法,或者是文中写错的地方,麻烦大佬留言指正文章错误,谢谢!!! 

    转载请声明出处:https://blog.csdn.net/BlackPlus28/article/details/80945137

     

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------

    2019-9-19更新:

    获取源码:

    1、评论,我看到会通过邮件发送源码。但不保证及时性,我也在上班,有时很忙。

     

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------

    2021-2-4

    1、由于工作原因,有时候看到评论消息都过去了大半个月甚至一个月。有几个小伙伴私我,建议创建群或者公众号。

       其实之前创建过群,后面陆陆续续加入了400多人,但后来有广告、买课非技术讨论,以及工作忙起来确实没多少精力打理群,于是解散了 。

                 之前群,现在解散)。

     

       再次创建一个公众号,方便大家自行下载资料所需源码及可能感兴趣的资料。本文代码下载关键词:javaWeb前后台交互

             

      如有帮助,请给博主一个赞吧。谢谢。

     

     

     

     

    展开全文
  • 今天小编就为大家分享一篇Django 使用Ajax进行前后台交互的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 使用ajax+webservice进行前后台交互的示例,能够传递参数,并且参数和返回值都以json的形式
  • java前后台交互工具类

    2018-07-06 14:26:10
    该工具类是进行前后台交互的工具类,使用的基础是建立在@ResonseBody注解之上的
  • 今天小编就为大家分享一篇python使用flask与js进行前后台交互的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 用户登录注册流程图 老版: 新版: 登陆界面 注册界面 登陆成功界面 LoginServlet import java.io.IOException; import javax.servlet.ServletException;...import javax.servle...

    用户登录注册流程图

    老版:

    新版:

     

    登陆界面



    注册界面


    登陆成功界面

    LoginServlet

    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.wzc.login.dao.UserDao;
    import com.wzc.login.domain.User;
    
    /**
     * @description 登录请求处理类
     * @author WANGZIC
     */
    @WebServlet("/LoginServlet")
    public class LoginServlet extends HttpServlet {
    
    	private static final long serialVersionUID = 1L;
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		request.setCharacterEncoding("utf-8");
    		response.setContentType("text/html;charset=utf-8");
    		//接收表单信息
    		String username = request.getParameter("username");
    		String password = request.getParameter("password");
    		String verifyc  = request.getParameter("verifycode");
    		//设置回显
    		request.setAttribute("username", username);
    		request.setAttribute("password", password);
    		request.setAttribute("verifycode", verifyc);
    		//获取验证码
    		String svc =(String) request.getSession().getAttribute("sessionverify");
    		//根据用户名查询用户
    		User user =new UserDao().findUser(username);
    		if(!svc.equalsIgnoreCase(verifyc)){
    			request.setAttribute("loginError", "* 验证码错误");
    			request.getRequestDispatcher("/login.jsp").forward(request, response);
    			return;
    		}
    		if(user!=null){
    			if(user.getPassword().equals(password)){
    				request.getSession().setAttribute("user", user);
    				response.sendRedirect("index.jsp");
    			}else {
    				request.setAttribute("loginError", "* 密码错误");
    				request.getRequestDispatcher("/login.jsp").forward(request, response);
    			}
    		}else {
    			request.setAttribute("loginError", "* 用户不存在");
    			request.getRequestDispatcher("/login.jsp").forward(request, response);
    		}
    		
    	}
    	
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doPost(request, response);
    	}
    
    }

    RegistServlet

    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.wzc.login.dao.UserDao;
    
    /**
     * @description 注册请求处理类
     * @author WANGZIC
     */
    @WebServlet("/RegistServlet")
    public class RegistServlet extends HttpServlet {
    
    	private static final long serialVersionUID = 1L;
    
    	@Override
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		request.setCharacterEncoding("utf-8");
    		response.setContentType("text/html;charset=utf-8");
    		String username = request.getParameter("username");
    		String password = request.getParameter("password");
    		String rpsw = request.getParameter("rpsw");
    		if(username==null||username.trim().isEmpty()){
    			request.setAttribute("registError", "用户名不能为空");
    			request.getRequestDispatcher("/regist.jsp").forward(request, response);
    			return;
    		}
    		if(password==null||password.trim().isEmpty()){
    			request.setAttribute("registError", "密码不能为空");
    			request.getRequestDispatcher("/regist.jsp").forward(request, response);
    			return;
    		}
    		if(!password.equals(rpsw)){
    			request.setAttribute("registError", "密码不一致");
    			request.getRequestDispatcher("/regist.jsp").forward(request, response);
    			return;
    		}
    		UserDao u = new UserDao();
    		boolean res = u.addUser(username,password);
    		if(res){
    			response.sendRedirect("index.jsp");
    		}else {
    			request.setAttribute("registError", "注册失败,该用户名已存在");
    			request.getRequestDispatcher("/regist.jsp").forward(request, response);
    		}
    	}
    	
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doPost(request, response);
    	}
    }
    

    LogoutServlet

    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;
    
    /**
     * Servlet implementation class LogoutServlet
     */
    @WebServlet("/LogoutServlet")
    public class LogoutServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
        public LogoutServlet() {
            super();
        }
        
        
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.getSession().removeAttribute("user");
    		response.sendRedirect("login.jsp");
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doGet(request, response);
    	}
    
    }
    


    VerifyCodeServlet

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Random;
    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;
    
    /**
     * @description 验证码请求生成处理类
     * @author WANGZIC
     */
    @WebServlet("/VerifyCodeServlet")
    public class VerifyCodeServlet extends HttpServlet {
    
    	private static final long serialVersionUID = 1L;
    	@Override
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		VerifyCode vc = new VerifyCode();
    		request.getSession().setAttribute("sessionverify", vc.getText());
    		vc.outputImage(90,35,response.getOutputStream());
    	}
    
    	@Override
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doGet(request, response);
    	}
    	
    	
    	/**
    	 * 验证码生成工具内部类
    	 * @author WANGZIC
    	 *
    	 */
    	static class VerifyCode {
    
    		private static final char[] CHARS = { '2', '3', '4', '5', '6', '7', '8','9',
    				'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M',
    				'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
    
    		private static Random random = new Random();
    
    		private String text ;
    		
    		public String getText() {
    			StringBuffer buffer = new StringBuffer();
    			for (int i = 0; i < 4; i++) {
    				buffer.append(CHARS[random.nextInt(CHARS.length)]);
    			}
    			text = buffer.toString();
    			return text;
    		}
    
    		public void outputImage(int width,int height,OutputStream out) throws IOException{
    			Color color = new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255));
    			Color reverse = new Color(255 - color.getRed(), 255 - color.getGreen(), 255 - color.getBlue());
    			BufferedImage bi = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
    			Graphics2D g = bi.createGraphics();
    			g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 25));
    			g.setColor(color);
    			g.fillRect(0, 0, width, height);
    			g.setColor(reverse);
    			g.drawString(text, 10, 26);
    			for (int i = 0, n = random.nextInt(80); i < n; i++) {
    				g.drawRect(random.nextInt(width), random.nextInt(height), 1, 1);
    			}
    			ImageIO.write(bi, "JPEG", out);
    		}
    	}
    }

    User

    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;
    	}
    	
    	
    }
    


    UserDao

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import com.wzc.login.domain.User;
    /**
     * @description 数据库连接与操作类用于增删改查数据并返回给servlet使用
     * @author WANGZIC
     *
     */
    public class UserDao {
    	/*
    	 * 数据库中运行下面的语句
    	  	CREATE TABLE `user` (
    		  `username` varchar(255) NOT NULL,
    		  `password` varchar(255) DEFAULT NULL,
    		  PRIMARY KEY (`username`)
    		) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    	*/
    	
    	//根据用户名查找用户密码
    	public User findUser(String username){
    		String sql = "select * from user where username=?";
    		Connection con =getConnection();
    		PreparedStatement pstmt =null;
    		ResultSet rs = null;
    		User user = new User();
    		try {
    			pstmt = con.prepareStatement(sql);
    			pstmt.setString(1, username);
    			rs = pstmt.executeQuery();
    			if(rs.next()){
    				user.setUsername(rs.getString("username"));
    				user.setPassword(rs.getString("password"));
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}finally {
    			try {
    				if(pstmt!=null)pstmt.close();
    				if(con!=null)con.close();
    			} catch (SQLException e) {		
    				e.printStackTrace();
    			}
    		}
    		return user;
    	}
    	//添加用户
    	public boolean addUser(String username,String psw){
    		Connection con = getConnection();
    		PreparedStatement pstmt =null;
    		String sql = "INSERT INTO user(username,password) VALUES(?,?)";
    		boolean res = false;
    		try {
    			pstmt = con.prepareStatement(sql);
    			pstmt.setString(1, username);
    			pstmt.setString(2, psw);
    			res = (pstmt.executeUpdate()==1);
    		}catch (SQLException e) {
    			if(!e.getMessage().contains("PRIMARY")){
    				e.printStackTrace();
    			}
    		}finally {
    			try {
    				if(pstmt!=null)pstmt.close();
    				if(con!=null)con.close();
    			}catch (SQLException e) {	
    				e.printStackTrace();
    			}
    		}
    		return res;
    	}
    	//获得连接
    	public static Connection getConnection(){
    		String driver ="com.mysql.jdbc.Driver";//记得依赖mysql-jdbc驱动包
    		String url ="jdbc:mysql://localhost:3306/mytest";//修改为自己的数据库
    		String user ="root";//修改未自己数据库的用户名密码
    		String password ="root";//修改未自己数据库的名密码
    		Connection connection =null;
    		try {
    			Class.forName(driver);
    			connection =DriverManager.getConnection(url, user, password);
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return connection;
    	}
    	public static void main(String[] args) {
    		//测试方法
    //		System.out.println(new UserDao().findUser("123"));
    //		new UserDao().addUser("1345", "1345");
    	}
    
    
    	
    }
    

    新增了用户管理功能(对用户的增删改查)

    有问题可以加QQ群:483411192
    源码下载 下载完源码之后请仔细阅读README.md文件,导入运行步骤和数据库表结构都在里面

    展开全文
  • SSM-Echarts-Maven 简单的前后台交互.后台数据是固定的.
  • 页面通过ajax与后台进行前后台数据交互 .
  • c# webform无刷新前后台交互
  • 本文主要介绍了原生node.js案例--前后台交互。本案例包含4部分:(1)HTML部分;(2)ajax部分;(3)JavaScript部分;(4)node服务器部分。具有很好的参考价值,下面跟着小编一起来看下吧
  • 同时上传文件和相应的数据,实现前后台交互,同时上传文件和相应的数据,实现前后台交互同时上传文件和相应的数据,实现前后台交互
  • juery easyui 前后台交互小demo,资源详解见:http://blog.csdn.net/yixi524/article/details/7800687
  • 网站前后台交互的原理简述   首先我们要讲到Http协议。这里所谓协议的作用,就是按照规定好的格式把数据处理,再进行传输。   我们这里以写邮件来形容一下。假设你要向一个人写一封邮件。那我们该怎么写这封邮件...

    网站前后台交互的原理简述

      首先我们要讲到Http协议。这里所谓协议的作用,就是按照规定好的格式把数据处理,再进行传输。

      我们这里以写邮件来形容一下。假设你要向一个人写一封邮件。那我们该怎么写这封邮件呢。首先我们要确定发送目标,我们写的标题,内容,附加什么文件等等。对方接收到邮件,他知道是谁写的,你写了什么内容,从而回复你邮件。

      我们的前后台交互,前台就类似你写的邮件,浏览器把你填入的数据和一些系统默认数据以Http协议封装,就像你邮件写的内容类似浏览器输入的参数,邮件附加文件相当于浏览器上传文件。邮件自己明明没有写个人信息,但接收方却知道发邮件的是谁,从而回复邮件给你,这就类似于http对你的ip等信息的封装。我们发邮件有邮件的固定格式,前后台交互也有固定的Http协议。

      当然,前后台交互和邮件也有不同点。前台只能发送请求给后台服务器,并且一般情况只有后台接收到前台的请求,才会响应前台。并且正常情况前台和前台之间不进行联系(有些特殊情况可以实现,比如QQ的面对面快传)。

      前台和后台有不同的表现形式,我们这里主要用浏览器和JavaWeb举例。我们打开浏览器,输入网站链接,当我们按下回车键后,或者当我们点击一个链接的时候,又或者我们提交一个表单,还有上传文件, js异步请求的时候,浏览器将我们的输入的各种信息还有我们的地址等信息按照Http协议封装,并将封装好的请求报文(按照Http协议封装好的请求字符串或流)发送到服务器的Tomcat,Tomcat此时也知道了发送请求的用户的地址等信息。Tomcat把接收到的请求报文解析,然后把数据封装在Request内置对象内传给对应地址的ServerLet,根据开发者写的ServerLet业务逻辑,Tomcat把最终的Response对象封装成响应报文(按照Http协议封装好的响应字符串或流),返回请求响应的那个浏览器页面。浏览器接收响应后,对响应报文进行解析。并最终根据响应内容,对页面进行渲染,又或者是由js获取值后,动态对页面进行处理。

    展开全文
  • 主要介绍了JavaEE实现前后台交互的文件上传与下载,分享相关技术,实现文件上传下载功能,需要的朋友可以参考下
  • WebSocket前后台交互

    2017-03-03 15:29:00
    其实对于前后台交互有很多种方法(只列举我知道的,嘻嘻):  1:from 表单:  使用场景——小信息量提交给后台  2:ajax(跨域的话用jsonp):  可以进行多量的前后台信心传递;  但实时性不高,不适合要求...

    其实对于前后台交互有很多种方法(只列举我知道的,嘻嘻):

      1:from 表单:

        使用场景——小信息量提交给后台

      2:ajax(跨域的话用jsonp):

        可以进行多量的前后台信心传递;

        但实时性不高,不适合要求实时性的场景;例如qq聊天

      3:webscoket:

        可以进行大量的前后台信息传递,

        实时性也十分良好;主要应用场景为聊天场景;

    一:websocket

      1:创建一个websocket实例:

         var socket = new WebSocket(socketUrl); socketUrl代表的是请求的地址,类似于ajax的url

     

      2:链接服务器进行前后台交互以及事件处理:

         socket.onopen = function(event) { 

           //想要验证是否连接成功可以给后台发一个消息
            socket.send('我已经连接成功了么'); 

          // 这个事件监听,可以监听后台返回来给你的消息,即str就是
            socket.onmessage = function(str) { 
               console.log(str); 
            }; 

          // 监听Socket的关闭
            socket.onclose = function(str) { 
                console.log(str); 
            };

          // 关闭Socket.... (需要的时候把注释去掉)
           //socket.close() ;

        };

    其实websocket用起来特别的容易,但是有一个缺点就是ie不兼容,那怎么办呢,还有一个办法就是socket.io.js,它看起来非常像客户端API,建立客户端Socket.IO;

    二:带Socket.IO的WebSocket:

      Socket.IO可以从GitHub下载,可以把socket.io.js文件包含到页面中:

      <script src="js/socket.io.js"></script>

      此时,Socket.IO在此页面上是有效的,是时候创建Socket了:

      1://创建Socket.IO实例,建立连接

      var socket = new io.Socke(bollmskn);//bollmskn代表的是请求地址,类似ajax的url

      socket.connect();

      2:// 连接监听

      socket.on('connect',function() { 
        console.log('服务器已连接!'); // 这里可以做一些事件的处理啊,什么的比如做一个提示啊什么的;
      });

      3://建立一个事件监听,监听后台返回来的数据

      socket.on('message',function(data) { 
        console.log('这是后台返回来的消息',data); 
      });

      4:// 通过Socket发送一条消息到服务器

      function sendMessageToServer(message) { 
        socket.send(message); 
      }

      5// 添加一个关闭连接的监听器

      socket.on('disconnect',function() { 
        console.log('链接已关闭!'); 
      });

    Socket.IO还提供了由本地WebSocket API提供的普通连接、断开连接、消息事件。Socket还提供了封装每个事件类型的方法。如果你们后台封装了特定的事件方法就按照你们的自己来,这个你们前后台自己商量着来;

    拜拜,周末愉快!!!

     

    转载于:https://www.cnblogs.com/lijuntao/p/6496906.html

    展开全文
  • 前后台交互基础知识

    2019-04-20 14:59:00
    在别人造的轮子上飞奔的时候,轮子背后的前后台交互如何进行一脸懵$.
  • 前后台交互案例

    2017-11-08 09:44:50
    前端用jquery的ajax方法发送请求到C#后台后台收到请求后返回请求结果案例
  • python小白准备用python写个后台项目,前后台交互的时间遇到一些问题,记录如下: 代码结构: 目录结构: 前台请求: <script src="/static/js/jssha256.js" type="text/javascript"></script> &...
  • http+json实现前后台交互

    热门讨论 2013-12-04 10:35:38
    http+json实现前后台交互,服务端用java,客户端用unity3d

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 158,553
精华内容 63,421
关键字:

前后台交互