Java Web将多个servlet封装在一个class类中

建个基础servlet类继承HttpServlet,其中除了可以反射方法外也可以写些常用的方法 :public class BaseServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //重写service方法 完成方法分发 /*获取请求路径 * 获取方法名称 * 获取方法对象 * 执行反射*/ String requestURI = req.getRequestURI(); //获取uri String methodName = requestURI.substring(requestURI.indexOf("/") + 1); //substring获取方法名 try { Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class); method.invoke(this,req,resp); //此处的this指入口的class,非此class } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } /** * 直接将传入对象序列化为json * 并传给浏览器 * @param obj * @param response * @throws IOException */ public void writeValue(Object obj,HttpServletResponse response) throws IOException { ObjectMapper mapper = new ObjectMapper(); response.setContentType("application/json;charset=utf-8"); //设置编码 注意两个设置字段中间用分号隔开 mapper.writeValue(response.getOutputStream(),obj); } public String writeValueAsString(Object obj) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(obj); //将传入对象序列化为json并返回字符 }} 相关servlet均继承baseservlet@WebServlet("/user/*")public class UserServlet extends BaseServlet { /*原本新建的get post方法改成你需要的方法 protected修饰改成public 否则需要在baseServlet中暴力反射 不建议使用暴力反射 申明UserService业务对象 方便使用 声明业务或dao对象一般先建接口 然后再实现*/ UserService service = new UserServiceImpl(); //访问 域名/user/regist即可以访问下列方法 public void regist(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }}

表单校验JQuery与正则的使用

简单讲解下正则的使用:单个字符:[]如: a [a-zA-Z0-9_]特殊符号代表特殊含义的单个字符:\d:单个数字字符 [0-9]\w:单个单词字符[a-zA-Z0-9_]量词符号:?:表示出现0次或1次*:表示出现0次或多次+:出现1次或多次{m,n}:表示 m<= 数量 <= n* m如果缺省: {,n}:最多n次* n如果缺省:{m,} 最少m次开始结束符号^:开始$:结束创建var reg = new RegExp("正则表达式");var reg = /正则表达式/;方法. test(参数):验证指定的字符串是否符合正则定义的规范,简单示例:var a="12345";var reg=/^\w{6,12}$/;   //正则 表示字符数6-12var b=reg.test(a); //此处a值不符合返回falsealert(b);下面以注册表单校验为例:<!--导入jquery--><script src="js/jquery-3.3.1.js"></script><script>    /*思路:    * 为每个单元格建立校验    * 在输入框离开焦点跟提交时候启用校验*/    function checkUsername() { //校验用户名        /*获取用户名值        * 定义正则        * 判断是否为true*/        var username = $("#username").val();        var reg_username = /^\w{3,10}$/; //用户名为3-10位字符串        var flag = reg_username.test(username);        if (flag) {            console.log("用户名合法") //浏览器控制台显示日志内容 实际不用写            $("#username").css("border", "");        } else {            console.log("用户名不合法")            $("#username").css("border", "1px solid red");        }        return flag;    }    function checkPassword() {        var password = $("#password").val();        var reg_password = /^\w{6,16}$/; //密码为6-10位字符串        var flag = reg_password.test(password);        if (flag) {            console.log("密码合法")            $("#password").css("border", "");        } else {            console.log("密码不合法")            $("#password").css("border", "1px solid red");        }        return flag;    }    function checkEmail() {        var email = $("#email").val();        var reg_email = /^\w+\@\w+\.\w+$/; //符合特定格式的字符串 带@跟.        var flag = reg_email.test(email);        if (flag) {            console.log("邮箱合法")            $("#email").css("border", "");        } else {            console.log("邮箱不合法")            $("#email").css("border", "1px solid red");        }        return flag;    }    function checkName() {        var name = $("#name").val();        var reg_name = /^\w{3,10}$/;        var flag = reg_name.test(name);        if (flag) {            console.log("姓名合法")            $("#name").css("border", "");        } else {            console.log("姓名不合法")            $("#name").css("border", "1px solid red");        }        return flag;    }    function checkTelephone() {        var telephone = $("#telephone").val();        var reg_telephone = /^\1\d{10}$/; //首位为1后面十位为数字        var flag = reg_telephone.test(telephone);        if (flag) {            console.log("手机合法")            $("#telephone").css("border", "");        } else {            console.log("手机不合法")            $("#telephone").css("border", "1px solid red");        }        return flag;    }    function checkCheck() {        var check = $("#check").val();        var reg_check = /^\w{4}$/; //已知验证码为四位字符        var flag = reg_check.test(check);        if (flag) {            console.log("验证码合法")            $("#check").css("border", "");        } else {            console.log("验证码不合法")            $("#check").css("border", "1px solid red");        }        return flag;    }    $(function () {        /*当表单提交时调用校验方法*/        $("#registerForm").submit(function () {            if (checkName() && checkPassword() && checkName() && checkEmail() && checkTelephone() && checkCheck()) {                $.post("user/regist", $(this).serialize(), function (data) { //serialize()序列化表单内容                    if (data.flag) { //从服务器获取注册结果                        console.log("注册成功")                        location.href = "regist_ok.html"; //注册成功跳转页面                    } else {                        console.log("注册失败")                        $("#errorMsg").html(data.errorMsg); //注册失败显示错误信息                    }                })            }        });        $("#username").blur(checkUsername); //鼠标离开输入框执行事件        $("#password").blur(checkPassword); //注意方法名后不要加(),否则失焦事件将无异议        $("#email").blur(checkEmail);        $("#name").blur(checkName);        $("#telephone").blur(checkTelephone);        $("#check").blur(checkCheck);    })</script>