产品如何做网站推广,个人网站可以做淘宝店铺名,海南百度推广电话,dw网页制作教程个人网站上一篇 个人整理非商业用途#xff0c;欢迎探讨与指正#xff01;#xff01; 文章目录 11.模块化Controller层12.AJAX12.1使用场景 13.JSON13.1如何使用后端发送JSON数据 11.模块化Controller层
将对应模块的Servlet写入到一个指定的模块中,模块化编程
使用switch方式
p…« 上一篇 个人整理非商业用途欢迎探讨与指正 文章目录 11.模块化Controller层12.AJAX12.1使用场景 13.JSON13.1如何使用后端发送JSON数据 11.模块化Controller层
将对应模块的Servlet写入到一个指定的模块中,模块化编程
使用switch方式
package com.qf.servlet;import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;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 sun.rmi.transport.proxy.HttpReceiveSocket;/*** Servlet implementation class EmpServlet*/
WebServlet(/emp/*)
public class EmpServlet extends HttpServlet {private static final long serialVersionUID 1L;/*** see HttpServlet#HttpServlet()*/public EmpServlet() {super();// TODO Auto-generated constructor stub}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 请求的urlString requestURL request.getRequestURL().toString();System.out.println(requestURL);String[] split requestURL.split(/);
// System.out.println(Arrays.toString(split));
// 获取到需要执行得Servlet方法String method split[split.length-1];switch (method) {case insert:insert(request,response);break;case delete:delete(request,response);break;default:return;}}public void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(我是删除方法);}public void insert(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(我是添加方法);}/*** see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}
}使用反射
WebServlet(/dept/*)
public class DeptServlet extends HttpServlet {private static final long serialVersionUID 1L;public DeptServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String requestURL request.getRequestURL().toString();String[] split requestURL.split(/);String method split[split.length-1];// 当前类对象Class? extends DeptServlet clazz this.getClass();
// 获取当前对象的方法try {
// 获取需要执行的方法Method declaredMethod clazz.getDeclaredMethod(method, HttpServletRequest.class,HttpServletResponse.class);
// 启动暴力反射declaredMethod.setAccessible(true);
// 方法的反向执行declaredMethod.invoke(this, request, response);} catch (Exception e) {System.out.println(没有对应的方法);}}public void insert(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {System.out.println(添加方法);}private void delete(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {System.out.println(删除方法);}private void update(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {System.out.println(修改方法);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}
}12.AJAX
异步的JS与XML技术,可以实现JS和服务器之间的异步交互 异步交互:在不刷新网页的前提下,局部代码与服务器进行交互 AJAX不是新技术,也不是编程语言,就是一个使用JS和后端进行交互的技术
AJAX的优点:用户体验非常好;缺点:开发改错困难,不可回退
12.1使用场景
场景1:AJAX验证用户名是否重复
package com.qf.servlet;import java.io.IOException;
import java.util.ArrayList;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 CheckNameServlet*/
WebServlet(/check)
public class CheckNameServlet extends HttpServlet {private static final long serialVersionUID 1L;public CheckNameServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name request.getParameter(name);
// 模拟从数据库中获取数据ArrayListString list new ArrayList();list.add(张三);list.add(李四);list.add(王五);list.add(tom);list.add(jack);list.add(rose);// 何如判断name在list中boolean contains list.contains(name);
// false是可用 true是不可用
// System.out.println(contains);
// 0不可用 1可用response.getWriter().print(contains?0:1);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}
}!DOCTYPE html
htmlheadmeta charsetutf-8title/title/headbodyinput typetext idusernamespan idmsg/spanscriptwindow.onload function(){let username document.querySelector(#username);let msg document.querySelector(#msg);username.onblur function(){// 发送ajax请求// 1.创建AJAX对象let xhr new XMLHttpRequest();// 2.封装AJAX的请求数据(形式为:xxxxServlet?xxxxxxxxxxxxxx)xhr.open(GET,check?nameusername.value);// 3.发送请求xhr.send();// 4.AJAX的请求状态判断// readyState// 0:ajax创建但未初始化// 1:ajax创建完成但未发送请求// 2:ajax发送请求到服务器端// 3:ajax请求正在被处理// 4:ajax请求处理完成,可以使用ajax获取服务器响应的数据xhr.onreadystatechange function(){if(xhr.status 200 xhr.readyState 4){// 5.获取响应的数据let result xhr.responseText;if(result 0){msg.innerHTML 用户名已存在;msg.style.color red;}else{msg.innerHTML √;msg.style.color green;}}}}}/script/body
/html13.JSON
配合AJAX进行分离式开发中数据的交互形式之一 JSON可以实现不同系统,不同语言之间的数据交互 JSON是一种数据格式,类似于JS中的{}对象 语法: { “key”:“value”, “key”:“value”, … } 数据体量小,可以做为数据传入的载体
13.1如何使用后端发送JSON数据
使用第三方工具(jar、依赖) Gson 谷歌发布 Jackson Springn内置的 FastJson 阿里发布的
package com.qf.test;import java.util.ArrayList;
import java.util.HashMap;import org.junit.Test;import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;public class TestJSON {Testpublic void test01() {System.out.println(helloworld);}Testpublic void test02() {Gson gson new Gson();String json gson.toJson(helloworld);System.out.println(json);}Testpublic void test03() {Gson gson new Gson();String json gson.toJson(new Dog(1,李四));System.out.println(json);}Testpublic void test04() {ArrayListDog dogs new ArrayList();dogs.add(new Dog(1,1));dogs.add(new Dog(2,2));dogs.add(new Dog(3,3));dogs.add(new Dog(4,4));String json new Gson().toJson(dogs);System.out.println(json);}Testpublic void test05() {ArrayListDog dogs new ArrayList();dogs.add(new Dog(1,1));dogs.add(new Dog(2,2));dogs.add(new Dog(3,3));dogs.add(new Dog(4,4));int currPage 10;HashMapString,Object map new HashMap();map.put(dogs, dogs);map.put(page, currPage);String json new Gson().toJson(map);System.out.println(json);}Testpublic void test06() throws Exception {Dog dog new Dog(1,1);ObjectMapper objectMapper new ObjectMapper();String json objectMapper.writeValueAsString(dog);System.out.println(json);}
}