精华内容
下载资源
问答
  • nodejs服务器——post请求与响应

    千次阅读 2019-01-02 20:28:32
    1.配置服务器入口文件 // A.下载express模块:npm install express@4 -s const myexpress=require("express"); // B.下载morgan模块:npm install morgan -s const logger=require(&...

    文件夹结构:
    在这里插入图片描述
    数据库结构:
    在这里插入图片描述
    html结构:

    	<form action="/login.do" method="post">
            用户名:<input name="userName" type="text">
            密 码:<input name="pwd" type="password">
            <button>提交</button>
        </form>
        <h1>注册</h1>
        <form action="/register.do" method="post">
            用户名:<input name="userName" type="text">
            密 码:<input name="pwd" type="password">
            <button>提交</button>
        </form>
    

    1.配置服务器入口文件

    // A.下载express模块:npm install express@4 -s
    const myexpress=require("express");
    // B.下载morgan模块:npm install morgan -s
    const logger=require("morgan");
    // C.下载解析post值的模块:npm install body-parser -s
    const bodyParser=require("body-parser");
    // 下载小图标模块:npm install serve-favicon -s
    const favicon=require("serve-favicon")
    const route=require("./routers/indexRouter")
    //D.创建服务器
    const myapp=myexpress();
    //配置服务器
    // 1.打印日志
    myapp.use(logger("dev"));
    // 2.解析post方法
    myapp.use(bodyParser.urlencoded({extended:false}));//配置post的body模块
    myapp.use(bodyParser.json())//将数据转换成json
    // 3.使用路由,分发任务
    myapp.use(route);//进入路由文件夹
    // 4.配置静态资源
    myapp.use(myexpress.static(__dirname+"/src"))//拦截请求
    // 5.配置网页小icon
    myapp.use(favicon(__dirname+"/src/images/logo.jpg"))
    //当发生404页面错误的时候返回一个404文件
    myapp.use(function (req,resp) {
       resp.status(404);
       resp.redirect("/page/404.html")//重定向
    })
    // E.侦听
    myapp.listen("8888",()=>{
        console.log("day3-express服务器启动")
    })
    

    2.配置路由文件

    //使用提供的路由模块
    const express=require("express");
    const router=express.Router();//创建路由模块
    const userCtrl=require("../controller/userCtrl")
    //拦截请求
    // router.get("/login.do",userCtrl.userLogin)//默认将req,resp传给函数userLogin
    router.post("/login.do",userCtrl.userLogin)//拦截登录请求
    router.post("/register.do",userCtrl.registerUser)//拦截注册请求
    module.exports=router;//公开路由对象
    

    3.配置控制文件

    const dbDao=require("../dao/userDao")
    //控制所有用户相关的东西
    module.exports={
        userLogin(req,resp) {
            //get方法
           /* let userName=req.query.userName;//userName是表单中用户名的name属性值
            let pwd=req.query.pwd;//pwd是表单中密码的name属性值*/
            //post方法
            let userName=req.body.userName;
            let pwd=req.body.pwd;
            let loginArr=[userName,pwd];
            dbDao.selectUser(loginArr,function (err,data) {//err:获取数据操作的错误信息
                if(data.length>0){
                    resp.redirect("/page/nav.html")//重定向
                }else{
                    resp.redirect("/index.html")//重定向
                }
            })
        },
        registerUser(req,resp){
            let username=req.body.userName;
            let pwd=req.body.pwd;
            let regisArr=[username,pwd];
            //调用数据持久层,只操作数据
            dbDao.addUser(regisArr,function (err,data) {//err:获取数据操作的错误信息
                if(data){
                    resp.send("注册成功")
                }else{
                    resp.send("注册失败")
                }
            })
        }
    }
    

    4.数据库操作方法

    //对数据库进行操作
    const myPool=require("../config/mysqlpool")
    module.exports={
        //查询数据操作
        selectUser(arr,cb){
            //使用数据库连接池来查询数据
            myPool.connect("SELECT s_name FROM students WHERE s_name=? AND s_pwd=?",arr,function (err,data) {//使用问号+数组的方式,能够防止sql注入
                cb(err,data)
            })
        },
        //增加数据操作
        addUser(arr,cb){
            //使用数据库连接池来添加数据
            myPool.connect("insert into students values(null,?,?)",arr,function (err,data) {//使用问号+数组的方式,能够防止sql注入
                cb(err,data)
            })
        }
    }
    

    5.连接数据库,进行相应的数据库操作,返回对应信息

    //连接数据库,下载node-mysql模块:npm install mysql -s
    const mysql=require("mysql");
    const poolCig={
        host:"localhost",//ip地址
        port:"3306",//端口号
        user:"root",//用户名
        password:null,//密码
        database:"mylogin"//数据库名
    }
    const dbPool={
        pool:{},
        create(){
            // 1.创建数据库连接池
            this.pool=mysql.createPool(poolCig)
        },
        connect(sql,arr,fun){
            // 2.通过连接池对象发起连接
            this.pool.getConnection(function (err,connection) {//err:获取连接对象的错误信息
                // 3.操作数据库
                connection.query(sql,arr,fun)
                connection.release();//关闭连接
            })
        }
    }
    dbPool.create()
    module.exports=dbPool
    
    展开全文
  • 服务器响应405

    千次阅读 2017-04-09 22:17:11
      本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.NET/yijuanxia.系统环境:Win7-64位 405是你方法的问题,页面提交的时用的是POST方法,而你在servlet里只重写了doGet方法,只能处理get请求...

      由于编者水平有限,文中难免会有错误和疏漏,请各位读者能提出宝贵建议或给予指正,可在博文下评论指出,我会及时改进,在此先感谢各位。
      本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.NET/yijuanxia.


    系统环境:Win7-64位


    405是你方法的问题,页面提交的时用的是POST方法,而你在servlet里只重写了doGet方法,只能处理get请求,处理不了post请求。

    展开全文
  • 服务器响应到客户端中文乱码的解决方式 在Java Web开发的过程中,很多人都会遇到当服务器向浏览器发送响应页面时,有时候因为码表的查询不一致,会在浏览器出现乱码问题。 例如:服务器中使用的是UTF-8,而浏览器...

    服务器与客户端交互的过程中出现中文乱码的解决方式

    服务器响应到客户端中文乱码的解决方式

    在Java Web开发的过程中,很多人都会遇到当服务器向浏览器发送响应页面时,有时候因为码表的查询不一致,会在浏览器出现乱码问题。

    例如:服务器中使用的是UTF-8,而浏览器默认是查询本地码表,注意如果是中文系统则使用的是GBK码表。造成了码表查询不一致,会出现乱码的情况。服务端发出的响应,有字节流和字符流两种方式向浏览器发送页面信息。

    字节流

    对于字节流中,out.write(“中文”.getByte(“UTF-8”)),在浏览器中会出现乱码问题。

    1. 第一种解决方式:用户更改浏览器的解码方式。此种方式不可取。

    2. 通过HttpServletResponse对象,模拟HTTP协议的响应消息头来通知浏览器使用什么码表来进行查询解码。

      • 通过response.setHeader(“Content-Type”,”text/html:charset=UTF-8”);来通知浏览器解码方式。

      • 模拟HTML页面的标签:如下示例代码:

      String meta="<meta http-equiv='Content-Type'content='text.html; charset=UTF-8'>";
                  resp.getOutputStream().write(meta.getBytes());
      • response.setContentType(“text/html:charset=UTF-8”)的方式来通知浏览器的解码方式。

    字符流

    在Servlet规范中要求,当使用字符流向浏览器发送页面信息时,默认查询的是ISO-8859-1码表。对于如下代码发送中文时有几种解决方式:

    PrintWriter out=resp.getWriter();
    out.print("中文");              //默认以ISO-8859-1编码。
    • 可以直接设置 resp.setCharacterEncoding(“GBK”); 以GBK方式编码

    • 当设置resp.setCharacterEncoding(“UTF-8”)编码输出时,可以使用字节流的通知客户端以UTF-8解码显示几种方式解决。

      • response.setHeader(“Content-Type”, “text/html; charset=UTF-8”);

      • response.setContentType(“text/html; charset=UTF-8”);

    客户端请求服务器出现的中文乱码解决方式

    当浏览器在表单填写中文参数时,发回到服务器收到的参数信息是乱码,这样在封装参数信息时,会出现错误。那么怎么解决中文的请求参数乱码问题呢?由于表单提交有两种方式:GET和POST,所以在处理中文的乱码问题也有所不同。

    post方式

    浏览器当前使用什么编码,表单提交的参数就是什么编码。这里服务器可以有多种方式去通知浏览器的编码方式。HTML中的meta标签可以这样做。示例代码如下:

    <metahttp-equiv="content-type" content="text/html; charset=UTF-8">

    但是这样并不能解决问题,需要通知程序,客户端提交的数据使用的编码。需要在接受参数的Servlet类中添加这段代码:

    request.setCharacterEncoding("utf-8");

    如果向客户端发出响应可能还需要添加如下代码才能在结果页面出现正确的中文:

    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html; charset=UTF-8");

    GET方式

    如果是GET请求提交数据,编码采用的ISO-8859-1。就不能使用上述的解决办法。这时需要在服务器端的Servlet类中先将其以ISO-8859-1进行解码,再使用UTF-8进行编码。示例代码如下:

      String name=request.getParameter("name");
      name=new String(name.getBytes("ISO-8859-1"),"UTF-8");
    展开全文
  • 作用在于读取服务器响应头部而忽略其内容,通过读取响应头部可以得出Content-Type、LastModified等内容。可以用来验证服务器是否正常运行或者获取一些服务器的信息。由于发送HEAD请求时,服务器只返回响应头部而...

    Ajax笔记,参考自《Ajax+PHP程序设计实战详解》

    Ajax发送请求的类型除了GET,POST外,还可以发送HEAD请求。作用在于读取服务器的响应头部而忽略其内容,通过读取响应头部可以得出Content-Type、LastModified等内容。可以用来验证服务器是否正常运行或者获取一些服务器的信息。由于发送HEAD请求时,服务器只返回响应头部而忽略内容,因此HEAD请求的响应比GET或者POST都要快得多。其中xmlHttp对象的方法getAllResponseHeaders(),getLastModified,getIsResourceAvailable()分别用来读取响应头部,修改时间和资源是否可用(可参考XMLHttpRequest对象手册)

    发送HEAD请求,处理响应信息的前端文件index.php

    <script type="text/javascript">
    var xmlHttp;
    var requestType="";
    function createXMLHttpRequest() {
    	if (window.ActiveXObject) {
    		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    	} else if (window.XMLHttpRequest) {
    		xmlHttp = new XMLHttpRequest();
    	}
    }
    function doHeaderRequest(request,url) {
    	requestType=request;
    	createXMLHttpRequest();
    	xmlHttp.onreadystatechange=handleStateChange;
    	xmlHttp.open("Head",url,true);
    	xmlHttp.send(null);
    }
    function handleStateChange() {
    	if(xmlHttp.readyState==4) {
    		if(requestType=="allResponseHeaders") {
    			getAllResponseHeaders();
    		}
    		else if(requestType=="lastModified") {
    			getLastModified();
    		}
    		else if(requestType=="isResourceAvailable") {
    			getIsResourceAvailable();
    		}
    	}
    }
    function getAllResponseHeaders() {
    	alert(xmlHttp.getAllResponseHeaders());
    }
    function getLastModified() {
    	alert("Last Modified: "+xmlHttp.getResponseHeader("Last-Modified"));
    }
    function getIsResourceAvailable() {
    	if(xmlHttp.status==200) {
    		alert("Successful response");
    	}
    }
    </script>
    <fieldset><legend>读取网页响应头</legend>
    <a href="javascript:doHeaderRequest('allResponseHeaders','readingResponseHeaders.xml')">
    读取所有文件头
    </a><br>
    <a href="javascript:doHeaderRequest('lastModified','readingResponseHeaders.xml')">
    获取文件修改日期
    </a><br>
    <a href="javascript:doHeaderRequest('isResourceAvailable','readingResponseHeaders.xml')">
    读取现存资源
    </a><br>
    </fieldset>
    

    服务器端文件readingResponseHeaders.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <readingResponseHeaders></readingResponseHeaders>


    展开全文
  • 忘记是第几次读《高性能网站建设指南》的“规则4──压缩组件”一章了,之前一直搞得浑浑噩噩,今天才恍然有所觉悟,原来通过减小HTTP响应大小来减少响应时间应用到tomcat服务器上是这么一回事,结果令人欣慰万分,...
  • HTTP请求与服务器响应全流程

    千次阅读 2018-06-27 17:16:42
     1.3请求方式–GET/POST 状态码  1.4 响应状态  2. HTTP请求,浏览器做了什么, 服务端处理解析过程 1:HTTP简介  1.1  HTTP(HyperText Transfer Protocol,超文本传输协议)最早就是计算机与计算机之间...
  • python获取服务器响应cookie

    千次阅读 2017-09-26 11:51:58
    r = requests.post(url,data=params,headers=headers) printHeaders(r.request.headers) #服务器返回的cookie需要用r.request里的headers来获取 printHeaders(r.headers) #这里是获取不到服务器返回的cookie的...
  • ajax提交等待服务器响应友好提示信息的实现
  • 服务器返回给客户端的响应可以分为三部分:响应状态码,响应头和响应体。 HTTP状态码(响应码)用来表明HTTP请求是否已经成功完成,表示服务器响应状态。 HTTP状态码(响应码一共分五大类: 消息响应 成功响应 ...
  • 发展历程1、最早的web服务器-NCSA(美国国家超级计算应用中心的缩写),由于主要开发者的离开,让其前景变得不明朗。所以一些开发者聚集在一起,对其进行了缺陷修复和增强代码,发布了新的版本Apache,即:“打补丁...
  • java程序获取服务器响应报文

    万次阅读 2012-09-16 16:38:50
    //post请求,请求实体放服务器需要的客户端数据,首部行后面需要一个空行,所以最后\r\n String postString = "POST / HTTP/1.0" + "\r\n" + "Host:www.baidu.com:80" + "\r\n\r\n"; //get请求,请求...
  • 1 Web开发入门 /* 1.1 引入 之前的程序: java桌面程序,控制台控制,socket gui界面... C/S (Client - Server 客户端-服务器端) 典型应用:QQ软件 ,飞秋,红蜘蛛。 特点: 1)必须下载特定的客户端程序。
  • 客户端POST发送json数据给服务端 //请求的地址  String url = "http://localhost:8080/springmvc/request/postRequest";  //创建Http Request(内部使用HttpURLConnection)  ClientHttpRequest request =  ...
  • 服务器响应数据的类型

    千次阅读 2015-08-03 09:48:22
    1.MIME,就是服务器响应数据的类型。 2. 什么是MIME类型-在把输出结果传送到浏览器上的时候,浏览器必须启动是党的应用程序来处理这个输出文档。这可以通过多种类型MIME(多功能网际邮件扩充协议)来完成。在HTTP中...
  • 2.服务器端接收到 Http 请求以创建一个响应,将数据发送到 Internet 使得传输到客户端。 3.客户端通过 JS 获取数据,更新页面。 AJAX - 向服务器发送请求请求 XMLHttpRequest 对象用于和服务器交换数据。如需将请求...
  • 响应状态码表示服务器响应状态,在爬虫开发过程中,向服务器发送一个请求,服务器会根据用户的请求返回相应的响应响应分为三类:响应状态码、响应头和响应体。 在爬虫开发过程中,可以根据服务器返回的响应状态...
  • 一,HTTP响应的格式 web服务器对客户端的响应一般包含:一个状态行,一些响应报头,一个空行和相应的文档构成。 1,状态行: 状态行由HTTP版本,一个状态代码以及一段对应状态代码的简短消息组成,表示请求是否被...
  • VB.net 通过WebRequest 发送post请求 如何获取http响应
  • 上一篇文章分析了nginx如何发送来自客户端的请求数据到后端服务器, 本篇文章开始将分析nginx如何接收来自后端服务器响应。nginx接收来自后端服务器响应分为两个过程,一个是接收来自后端服务器的http响应头部,...
  • Apache、IIS、nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误。 例1:用linux下的curl命令发送POST请求给Apache服务器上的HTML静态页 [root@...
  • Java post请求以及响应乱码的解决

    千次阅读 2018-01-31 13:30:14
    public static String sendPost(String url, String param) throws Exception{    BufferedReader in = null;  String result = ""; // try {  URL realUrl = new URL
  • 目录 ...请求信息 响应信息 常见的响应状态码 ...WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。 HTTP是hypertext transfer protocol(超文本传输协议)的...
  • 开发工具与关键技术:VS/MVC 作者:何桂朋 撰写时间:2019年4月22日 客户端和服务器端进行请求-响应的原生js写法:XMLHttpRequest, 正如W3School 所说 ...XMLHttpRequest 可以同步或异步地返回 Web 服务器响应...
  • C#发送HTTP POST请求和响应POST请求

    千次阅读 2015-02-13 14:17:54
    响应请求:  protected void Page_Load(object sender, EventArgs e)  {  if (!IsPostBack)  {  try  {  System.IO.Stream s = Request.InputStream;  int count = 0;  byte[] buffer = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 299,207
精华内容 119,682
关键字:

post服务器响应慢