当前位置: 首页 > news >正文

简述创建一个网站的过程免费网页制作平台

简述创建一个网站的过程,免费网页制作平台,手机如何制作app,it项目网站开发的需求文档AJAX学习笔记2发送Post请求_biubiubiu0706的博客-CSDN博客 1.验证用户名是否可用 需求,用户输入用户名,失去焦点-->onblur失去焦点事件,发送AJAX POST请求,验证用户名是否可用 新建表 前端页面 WEB-INF下新建lib包引入依赖,要用JDBC 后端代码 package com.web;import jav…

AJAX学习笔记2发送Post请求_biubiubiu0706的博客-CSDN博客

1.验证用户名是否可用

需求,用户输入用户名,失去焦点-->onblur失去焦点事件,发送AJAX POST请求,验证用户名是否可用

新建表

前端页面

WEB-INF下新建lib包引入依赖,要用JDBC

后端代码

package com.web;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 java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;/*** @author hrui* @date 2023/9/3 22:11*/
@WebServlet("/checkusername")
public class AjaxRequestCheckName extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取用户名String username = req.getParameter("username");//打布尔标记(一种编程模型)boolean flag=false;//连接数据库校验用户名是否存在Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;//1.注册驱动//System.setProperty("jdbc.drivers","com.mysql.cj.jdbc.Driver");try {Class.forName("com.mysql.cj.jdbc.Driver");//2.获取连接conn= DriverManager.getConnection("xxx", "xxx", "xxx");//3.获取执行对象String sql="select id,name from t_user where name=?";ps = conn.prepareStatement(sql);ps.setString(1, username);//4.执行sqlrs = ps.executeQuery();//5.处理结果集if(rs.next()){//如果只有一条的情况//用户名存在flag=true;}} catch (Exception e) {e.printStackTrace();}finally {if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(ps!=null){try {ps.close();} catch (SQLException e) {e.printStackTrace();}}if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}//响应结果到浏览器resp.setContentType("text/html;charset=utf-8");PrintWriter writer = resp.getWriter();if(flag){writer.print("<font color='red'>用户名存在,不可用</font>");}else{writer.print("<font color='green'>用户名可用</font>");}}public static void main(String[] args) {try {//Class.forName("com.mysql.cj.jdbc.Driver");Connection conn= DriverManager.getConnection("xxx", "xxx", "xxx");System.out.println(conn);} catch (Exception e) {e.printStackTrace();}}
}

还可以在input获得焦点时候对<span里面的数据清空

其实和input里面直接写  οnfοcus="xxx方法"  一样

2.用户点击按钮,发送AJAX请求  显示学院列表

测试

现在这种情况存在的问题是是后端代码又开始拼接HTML

能不能直接返回数据,剩下让前端处理   可以返回JSON  或者 XML

返回JSON数据

回顾JSON

也可以是这样

测试

上面是在JS代码中创建JSON对象,数组的访问

但是在后端返回前端时候,永远返回的都是字符串--->如何将JSON字符串转换为JSON对象呢

测试

下面后端就用JSON格式字符串的方式返回数据

下面去连接下数据库

前端

后端

package com.web;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 java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;/*** @author hrui* @date 2023/9/3 23:57*/
@WebServlet("/studys")
public class AjaxRequestStudys extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//连接数据库,查询学院resp.setContentType("text/html;charset=utf-8");PrintWriter writer = resp.getWriter();StringBuilder builder=new StringBuilder();String jsonStr="";//        builder.append("<tr>");
//        builder.append("<td>1</td>");
//        builder.append("<td>张三</td>");
//        builder.append("<td>20</td>");
//        builder.append("<td>北京大兴区</td>");
//        builder.append("</tr>");
//        builder.append("<tr>");
//        builder.append("<td>2</td>");
//        builder.append("<td>李四</td>");
//        builder.append("<td>22</td>");
//        builder.append("<td>北京海淀区</td>");
//        builder.append("</tr>");//拼接一个JSON数组回去//builder.append("[");//用''单引号也不行 前端解析不了
//        builder.append("{'id':1,'name':'张三','age':20,'addr':'北京大兴区'},");
//        builder.append("{'id':2,'name':'李四','age':22,'addr':'北京海淀区'}");
//        builder.append("{\"id\":1,\"name\":\"张三\",\"age\":20,\"addr\":\"北京大兴区\"},");
//        builder.append("{\"id\":2,\"name\":\"李四\",\"age\":22,\"addr\":\"北京海淀区\"}");//连接数据库校验用户名是否存在Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;//1.注册驱动//System.setProperty("jdbc.drivers","com.mysql.cj.jdbc.Driver");try {Class.forName("com.mysql.cj.jdbc.Driver");//2.获取连接conn= DriverManager.getConnection("xxx", "xxx", "xxx");//3.获取执行对象String sql="select id,name,age,addr from t_stu";ps = conn.prepareStatement(sql);//4.执行sqlrs = ps.executeQuery();//5.处理结果集builder.append("[");while(rs.next()){//如果只有一条的情况String id = rs.getString("id");String name = rs.getString("name");String age = rs.getString("age");String addr = rs.getString("addr");//{"id":1,"name":"zhangsan","age":13,"addr":"北京大兴区"}builder.append("{\"id\":"+id+",\"name\":\""+name+"\",\"age\":"+age+",\"addr\":\""+addr+"\"},");}//去掉最后一个{},后面的逗号jsonStr=builder.substring(0, builder.length()-1)+"]";} catch (Exception e) {e.printStackTrace();}finally {if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(ps!=null){try {ps.close();} catch (SQLException e) {e.printStackTrace();}}if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}writer.print(jsonStr);}
}

测试

这样拼接JSON太麻烦   使用fastjson对程序进行改进

引入jar包

不需要那么麻烦进行拼接

package com.web;import com.alibaba.fastjson.JSON;
import com.pojo.Student;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 java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;/*** @author hrui* @date 2023/9/3 23:57*/
@WebServlet("/studys")
public class AjaxRequestStudys extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//连接数据库,查询学院resp.setContentType("text/html;charset=utf-8");PrintWriter writer = resp.getWriter();
//        StringBuilder builder=new StringBuilder();
//        String jsonStr="";List<Student> list=new ArrayList<>();//        builder.append("<tr>");
//        builder.append("<td>1</td>");
//        builder.append("<td>张三</td>");
//        builder.append("<td>20</td>");
//        builder.append("<td>北京大兴区</td>");
//        builder.append("</tr>");
//        builder.append("<tr>");
//        builder.append("<td>2</td>");
//        builder.append("<td>李四</td>");
//        builder.append("<td>22</td>");
//        builder.append("<td>北京海淀区</td>");
//        builder.append("</tr>");//拼接一个JSON数组回去//builder.append("[");//用''单引号也不行 前端解析不了
//        builder.append("{'id':1,'name':'张三','age':20,'addr':'北京大兴区'},");
//        builder.append("{'id':2,'name':'李四','age':22,'addr':'北京海淀区'}");
//        builder.append("{\"id\":1,\"name\":\"张三\",\"age\":20,\"addr\":\"北京大兴区\"},");
//        builder.append("{\"id\":2,\"name\":\"李四\",\"age\":22,\"addr\":\"北京海淀区\"}");//连接数据库校验用户名是否存在Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;String s="";//1.注册驱动//System.setProperty("jdbc.drivers","com.mysql.cj.jdbc.Driver");try {Class.forName("com.mysql.cj.jdbc.Driver");//2.获取连接conn= DriverManager.getConnection("xxx", "xxx", "xxx");//3.获取执行对象String sql="select id,name,age,addr from t_stu";ps = conn.prepareStatement(sql);//4.执行sqlrs = ps.executeQuery();//5.处理结果集//builder.append("[");while(rs.next()){//如果只有一条的情况String id = rs.getString("id");String name = rs.getString("name");String age = rs.getString("age");String addr = rs.getString("addr");//{"id":1,"name":"zhangsan","age":13,"addr":"北京大兴区"}//builder.append("{\"id\":"+id+",\"name\":\""+name+"\",\"age\":"+age+",\"addr\":\""+addr+"\"},");Student stu=new Student(id,name,age,addr);list.add(stu);}//去掉最后一个{},后面的逗号//jsonStr=builder.substring(0, builder.length()-1)+"]";s = JSON.toJSONString(list);} catch (Exception e) {e.printStackTrace();}finally {if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(ps!=null){try {ps.close();} catch (SQLException e) {e.printStackTrace();}}if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}writer.print(s);}
}

测试

下面用XML进行数据交互(XML体积大,现在相对用的少)

后端代码   注意下Content-Type

@WebServlet("/xmlstudys")
public class AjaxRequestXML extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//注意响应类型是XMLresp.setContentType("text/xml;charset=utf-8");PrintWriter writer = resp.getWriter();StringBuilder xml=new StringBuilder();/*XML格式<Students><Student><id>1</id><name>张三</name><age>22</age><addr>北京大兴区</addr></Student><Student><id>2</id><name>李四</name><age>23</age><addr>北京海淀区</addr></Student></Students>*/xml.append("<Students>");xml.append("<Student>");xml.append("<id>1</id>");xml.append("<name>张三</name>");xml.append("<age>22</age>");xml.append("<addr>北京大兴区</addr>");xml.append("</Student>");xml.append("<Student>");xml.append("<id>2</id>");xml.append("<name>李四</name>");xml.append("<age>23</age>");xml.append("<addr>北京海淀区</addr>");xml.append("</Student>");xml.append("</Students>");writer.print(xml);}
}

前端代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>使用XML完成数据交互</title>
</head>
<body>
<script type="text/javascript">window.onload=function(){document.getElementById("btn").onclick=function(){var xhr=new XMLHttpRequest();xhr.onreadystatechange=function (){if(this.readyState==4){if(this.status==200){//服务器响应XML字符串,如何接收//使用XMLHTTPRequest的responseXML属性,接收之后,自动封装成document对象(文档对象)var xmlDoc=this.responseXML;console.log(xmlDoc)}else{}}}xhr.open("get","/ajax/xmlstudys",true)//xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")xhr.send()}}
</script><input type="button" value="显示学生列表" id="btn"><table width="50%" border="1px"><tr><th>序号</th><th>姓名</th><th>年龄</th><th>住址</th></tr><tbody id="stubody"><!--        <tr>--><!--            <td>1</td>--><!--            <td>张三</td>--><!--            <td>20</td>--><!--            <td>北京大兴区</td>--><!--        </tr>--><!--        <tr>--><!--            <td>2</td>--><!--            <td>李四</td>--><!--            <td>22</td>--><!--            <td>北京海淀区</td>--><!--        </tr>--></tbody>
</table>
</body>
</html>

测试

具体前端代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>使用XML完成数据交互</title>
</head>
<body>
<script type="text/javascript">window.onload=function(){document.getElementById("btn").onclick=function(){var xhr=new XMLHttpRequest();xhr.onreadystatechange=function (){if(this.readyState==4){if(this.status==200){//服务器响应XML字符串,如何接收//使用XMLHTTPRequest的responseXML属性,接收之后,自动封装成document对象(文档对象)var xmlDoc=this.responseXML;console.log(xmlDoc)//获取所有<student>元素,返回了多个对象,是个数组var students=xmlDoc.getElementsByTagName("student")console.log(students[0].nodeName)var html=""for(var i=0;i<students.length;i++){var stu=students[i]//获取<student>节点下所有子元素var s=stu.childNodes;html+="<tr>"for(var j=0;j<s.length;j++){var node=s[j]if(node.nodeName=="id"){console.log("id="+node.textContent)html+="<td>"+node.textContent+"</td>"}if(node.nodeName=="name"){console.log("name="+node.textContent)html+="<td>"+node.textContent+"</td>"}if(node.nodeName=="age"){console.log("age="+node.textContent)html+="<td>"+node.textContent+"</td>"}if(node.nodeName=="addr"){console.log("addr="+node.textContent)html+="<td>"+node.textContent+"</td>"}}html+="</tr>"}document.getElementById("stubody").innerHTML=html}else{}}}xhr.open("get","/ajax/xmlstudys",true)//xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")xhr.send()}}
</script><input type="button" value="显示学生列表" id="btn"><table width="50%" border="1px"><tr><th>序号</th><th>姓名</th><th>年龄</th><th>住址</th></tr><tbody id="stubody"><!--        <tr>--><!--            <td>1</td>--><!--            <td>张三</td>--><!--            <td>20</td>--><!--            <td>北京大兴区</td>--><!--        </tr>--><!--        <tr>--><!--            <td>2</td>--><!--            <td>李四</td>--><!--            <td>22</td>--><!--            <td>北京海淀区</td>--><!--        </tr>--></tbody>
</table>
</body>
</html>


文章转载自:
http://caravaggiesque.c7512.cn
http://embryocardia.c7512.cn
http://scaliness.c7512.cn
http://festival.c7512.cn
http://ozarkian.c7512.cn
http://recriminative.c7512.cn
http://walhalla.c7512.cn
http://laconicum.c7512.cn
http://refection.c7512.cn
http://unpracticed.c7512.cn
http://synchronic.c7512.cn
http://barbara.c7512.cn
http://jawan.c7512.cn
http://hymnody.c7512.cn
http://favored.c7512.cn
http://turtleburger.c7512.cn
http://scatty.c7512.cn
http://mether.c7512.cn
http://chelation.c7512.cn
http://bethlehem.c7512.cn
http://fusionist.c7512.cn
http://immy.c7512.cn
http://aimless.c7512.cn
http://deportable.c7512.cn
http://cretonne.c7512.cn
http://pericardium.c7512.cn
http://garfish.c7512.cn
http://hyporchema.c7512.cn
http://excrete.c7512.cn
http://fluorimeter.c7512.cn
http://strudel.c7512.cn
http://neuropsychical.c7512.cn
http://disjunct.c7512.cn
http://aircrew.c7512.cn
http://capacitron.c7512.cn
http://traipse.c7512.cn
http://averment.c7512.cn
http://expectant.c7512.cn
http://shelduck.c7512.cn
http://subkingdom.c7512.cn
http://jezail.c7512.cn
http://staggerbush.c7512.cn
http://coincide.c7512.cn
http://portraiture.c7512.cn
http://iodometry.c7512.cn
http://tetraspore.c7512.cn
http://hieroglyph.c7512.cn
http://trothless.c7512.cn
http://bureaucratise.c7512.cn
http://rummily.c7512.cn
http://shambles.c7512.cn
http://chassid.c7512.cn
http://foresleeve.c7512.cn
http://duskiness.c7512.cn
http://sverdlovsk.c7512.cn
http://bill.c7512.cn
http://middlebreaker.c7512.cn
http://nobly.c7512.cn
http://incivism.c7512.cn
http://pacs.c7512.cn
http://abscisin.c7512.cn
http://ombrometer.c7512.cn
http://hornblowing.c7512.cn
http://nanoprogram.c7512.cn
http://dpm.c7512.cn
http://anelectric.c7512.cn
http://epruinose.c7512.cn
http://subcylindrical.c7512.cn
http://zanza.c7512.cn
http://rectocele.c7512.cn
http://exultingly.c7512.cn
http://renavigation.c7512.cn
http://mispronounce.c7512.cn
http://conjointly.c7512.cn
http://hunter.c7512.cn
http://overleap.c7512.cn
http://yoruba.c7512.cn
http://firmer.c7512.cn
http://manufacturing.c7512.cn
http://kinetoplast.c7512.cn
http://bands.c7512.cn
http://trypanocidal.c7512.cn
http://despise.c7512.cn
http://userkit.c7512.cn
http://splashdown.c7512.cn
http://pudge.c7512.cn
http://sebe.c7512.cn
http://gangling.c7512.cn
http://plaster.c7512.cn
http://tribromoacetaldehyde.c7512.cn
http://whiggery.c7512.cn
http://overmaster.c7512.cn
http://numbering.c7512.cn
http://compile.c7512.cn
http://convulse.c7512.cn
http://scrag.c7512.cn
http://inheritable.c7512.cn
http://illocal.c7512.cn
http://neigh.c7512.cn
http://varuna.c7512.cn
http://www.zhongyajixie.com/news/92039.html

相关文章:

  • 网站开发费用怎么做账免费创建个人博客网站
  • 沈阳网站 房小二百度成都总部
  • 做网站的公司主要工作seo优化博客
  • 蛋糕 网站 模板竞价托管运营哪家好
  • 给企业做网站怎么收钱营销策略方案
  • 色蜂视频最新黑帽seo培训
  • 游戏网站设计论文私人浏览器
  • 免费b2b网站大全1042海外推广渠道
  • 福田做商城网站建设哪家公司便宜点软文发布平台
  • 电子商务公司建设网站方案设计最新国际军事动态
  • 东莞保安公司在哪里周口seo推广
  • 建筑设计地图网站海会网络做的网站怎么做优化
  • 重庆网站建设jccit重庆seo博客
  • 国外ps网站下载百度网盘app
  • 做网站费用走什么科目石家庄seo排名外包
  • ftp链接网站空间如何推广
  • 清远做网站哪家好百度搜索最多的关键词
  • 建商城网站需要什么条件竞价开户
  • 做交友网站挣钱吗百度seo搜索营销新视角
  • 东阳建设公司网站百度识图鉴你所见
  • 上海高端网站建设高端网站建设广东seo
  • 用angularjs做的网站基本营销策略有哪些
  • 营销型企业网站类型搜索引擎有哪些网站
  • java做简易网站上海网站制作公司
  • 做网站链接还要服务器吗买市场营销十大经典案例
  • 南京江宁做网站网站关键词优化推广哪家快
  • 杭州做网站比较出名的公司有哪些首页排名关键词优化
  • 网站建设我们的优势seo包括哪些方面
  • 长春 网站建设搜索引擎排行榜前十名
  • wordpress搭建漫画站线上营销的优势