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

蛋糕网站建设规划书网站建议方案

蛋糕网站建设规划书,网站建议方案,asp网站合法,制作网站404页面Javaweb基础学习 web核心介绍一、HTTP1.1 HTTP介绍1.2、HTTP请求数据格式1.3、HTTP响应数据格式 二、Tomcat2.1 简介2.2 基本使用2.3 Tomcat配置2.4 Tomcat部署项目2.5 Web项目结构2.6 创建Maven Web项目 三、Servlet3.1、Servlet简介快速入门3.2 创建Servlet步骤3.3 Serv… Javaweb基础学习 web核心介绍一、HTTP1.1 HTTP介绍1.2、HTTP请求数据格式1.3、HTTP响应数据格式 二、Tomcat2.1 简介2.2 基本使用2.3 Tomcat配置2.4 Tomcat部署项目2.5 Web项目结构2.6 创建Maven Web项目 三、Servlet3.1、Servlet简介快速入门3.2 创建Servlet步骤3.3 Servlet执行流程和生命周期3.4 Servlet方法介绍体系结构3.5 urlPattern配置3.6 XML配置Servlet 四、Request请求4.1 Request简介4.2 Request继承体系4.3 Request 获取请求数据4.4、Request通用方式获取请求参数4.5、请求参数中文乱码处理4.6 Request请求转发 五、Response响应5.1 设置响应数据功能介绍5.2 Response的重定向5.3 资源路径问题5.4 Response响应字符数据5.5 Response响应字节数据 六、小练习6.1 登录页面6.2 注册页面 web核心介绍 B/S架构: Browser/Server浏览器/服务器架构模式它的特点是客户端只需要浏览器应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器获取Web资源服务器把Web资源发送给浏览器即可 好处:易于维护升级:服务器端升级后客户端无需任何部署就可以使用到新的版本 静态资源: HTML、CSS、JavaScript、图片等。负责页面展现动态资源: Servlet、JSP等。负责逻辑处理数据库: 负责存储数据Web服务器: 负责解析HTTP协议解析请求数据并发送响应数据 一、HTTP 1.1 HTTP介绍 概念: HyperText Transfer Protocol超文本传输协议规定了浏览器和服务器之间数据传输的规则 HTTP协议特点: 基于TCP协议面向连接安全基于请求-响应模型的一次请求对应一次响应HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。 缺点多次请求间不能共享数据。----- Java中使用会话技术(Cookie、Session)来解决这个问题 优点速度快 1.2、HTTP请求数据格式 请求数据分为3部分: 请求行:请求数据的第一行。其中GET表示请求方式/表示请求资源路径HTTP/1.1表示协议版本请求头:第二行开始格式为key: value形式。请求体: POST请求的最后一部分存放请求参数 常见的HTTP请求头: Host:表示请求的主机名 User-Agent:浏览器版本例如Chrome浏览器的标识类似Mozilla/5.0 …Chrome/79IE浏览器的标识类似Mozilla/5.0 (Windows NT …) like Gecko; Accept:表示浏览器能接收的资源类型如text/,image或者*/*表示所有; Accept-Language:表示浏览器偏好的语言服务器可以据此返回不同语言的网页; Accept-Encoding:表示浏览器可以支持的压缩类型例如gzip, deflate等。 GET请求和POST请求的区别 GET请求请求参数再请求行中没有请求体。POST请求请求参数在请求体中 GET请求请求参数大小有限制POST没有 1.3、HTTP响应数据格式 响应数据分为3部分: 响应行:响应数据的第一行。其中HTTP/1.1表示协议版本200表示响应状态码OK表示状态码描述响应头:第二行开始格式为key: value形式响应体:最后一部分。存放响应数据 常见的HTTP响应头: Content-Type:表示该响应内容的类型例如text/html,image/jpeg;Content-Length:表示该响应内容的长度字节数);Content-Encoding:表示该响应压缩算法例如gzip;Cache-Control:指示客户端应如何缓存例如max-age300表示可以最多缓存300秒 状态码分类说明1xx响应中——临时状态码表示请求已经接受告诉客户端应该继续请求或者如果它已经完成则忽略它2xx成功―—表示请求已经被成功接收处理已完成3xx重定向——重定向到其它地方:它让客户端再发起一个请求以完成整个处理。4xx客户端错误—―处理发生错误责任在客户端如:客户端的请求一个不存在的资源客户端未被授权禁止访问等5xx服务器端错误—―处理发生错误责任在服务端如:服务端抛出异常路由出错HTTP版本不支持等 二、Tomcat 2.1 简介 Web服务器是一个应该程序(软件)对HTTP协议的操作进行封装使得程序员不必直接对协议进行操作让web开发更加便捷。主要功能是“提供网上信息浏览眠务” 概念: Tomcat是Apache软件基金会一个核心项目是一个开源免费的轻量级Web服务器支持Servlet/JSP少量JavaEE规范。 JavaEE: Java Enterprise EditionJava企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF Tomcat也被称为Web容器、Servlet容器。Servlet 需要依赖于Tomcat才能运行 2.2 基本使用 下载 官网下载 安装绿色版直接解压即可 卸载直接删除目录即可 启动双击: bin\startup.bat 关闭 直接×掉运行窗口:强制关闭双击bin\shutdown.bat:正常关闭CtrlC:正常关闭 (建议使用) 2.3 Tomcat配置 配置 修改启动端口号conf/server.xml 注意HTTP协议默认端口号为80如果将Tomcat端口号改为80则将来访问Tomcat时将不用输入端口号 启动时可能出现的问题 1.端口号冲突:找到对应程序将其关闭掉 2.启动窗口一闪而过:检查JAVA HOME环境变量是否正确配置 2.4 Tomcat部署项目 Tomcat部署项目: 将项目放置到webapps目录下即部署完成一般JavaWeb项目会被打成war包然后将war包放到webapps目录下Tomcat会自动解压缩war文件 2.5 Web项目结构 Maven Web项目结构开发中的项目 部署的JavaWeb项目结构开发完成可以部署的项目 编译后的Java字节码文件和resources的资源文件放到WEB-INF下的classes目录下pom.xml中依赖坐标对应的iar包放入WEB-INF下的lib目 录下 2.6 创建Maven Web项目 使用骨架 1.选择Web项目骨架创建项目 2.删除pom.xml中多余的坐标 3.补齐缺失的目录结构 不适用骨架 1.选择web项目骨架创建项目 2.pom.xml中添加打包方式为war 3.补齐缺失的目录结构: webapp 通过插件进行创建web项目 讲下面代码放置于pom.xml 添加Tomcat插件 buildplugins!-- Tomcat 插件--plugingroupldorg.apache.tomcat.maven/groupldartifactldtomcat7-maven-plugin/artifactldversion2.2/version/plugin/plugins /build 使用Maven Helper插件快速启动项目选中项目右键– Run Maven -- tomcat7:run 三、Servlet 3.1、Servlet简介快速入门 Servlet是Java提供的一门 动态 web资源开发技术Servlet是JavaEE规范之一其实就是一个接口将来我们需要定义Servlet类实现Servlet接口并由web服务器运行Servlet 3.2 创建Servlet步骤 1. 首先导入Servlet依赖包 dependenciesdependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.1.0/versionscopeprovided/scope/dependency/dependencies注意在导包的时候要 记到导入 scopeprovided/scope 要不然在运行的时候会报错 创建:定义一个类实现Servlet接口并重写接口中所有方法并在service方法中输入一句话 public class ServletDemo1 implements Servlet {public void service() }配置:在类上使用WebServlet注解配置该Servlet的访问路径 WebServlet(/demo1) public class ServletDemo1 implements Servlet {}访问:启动Tomcat浏览器输入URL 访问该Servlet http://localhost:8080/tomcat1_war/login 3.3 Servlet执行流程和生命周期 Servlet由谁创建? Servlet方法由谁调用? Servlet由web服务器创建Servlet方法由web服务器调用。 服务器怎么知道servlet中一定有service方法? 因为我们自定义的Servlet必须实现Servlet接口并复写其方法而Servlet接口中有service方法 生命周期 解释 对象的生命周期指一个对象从被创建到被销毁的整个过程 Servlet运行在servlet容器(web服务器)中其生命周期由容器来管理分为4个阶段: 加载和实例化默认情况下当Servlet第一次被访问时由容器创建servlet对象 非默认情况下可以该改变创建时机 WebServlet (urlPatterns /demo,loadOnStartup 1)负整数第一次被访问时创建Servlet对象 0或正整数服务器启动时创建Servlet对象数字越小优先级越高 初始化在Servlet实例化之后容器将调用servlet的init()方法初始化这个对象完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次 请求处理每次请求Servlet时Servlet容器都会调用servlet的service()方法对请求进行处理。 服务终止当需要释放内存或者容器关闭时容器就会调用servlet实例的destroy()方法完成资源的释放。在destroy()方法调用之后容器会释放这个Servlet实例该实例随后会被Java的垃圾收集器所回收 3.4 Servlet方法介绍体系结构 初识化方法在Servlet被创建的时候执行就只执行一次 Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println(在初始创建的时候就执行该方法就执行一次init…………);}提供服务的方法每次调用Servlet的时候都会调用该方法 Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println(当每次访问Servlet的时候就会执行一次service…………);}销毁方法当Servlet被销毁时调用该方法。在内存释放或服务器关闭时销毁Servlet Overridepublic void destroy() {System.out.println(当该Servlet销毁的时候就执行一次一共执行一次destory…………);}获取ServletConfig对象 ServletConfig getServletConfig()获取Servlet信息 String getServletInfo()体系结构 我们将来开发B/S架构的web项目都是针对HTTP协议所以我们自定义Servlet会继承HttpServlet 继承的HttpServlet就是人家封装好的Servlet对象便于我们web开发 HttpServlet使用方法 继承HttpServlet重写doGet()– 请求方式get 和 doPost()方法–请求方式post通过重写的方法来进行不同请求方式的获取数据方式 HttpServlet原理 import javax.servlet.*; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.security.interfaces.RSAKey;public class ServletDom2 implements Servlet {Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println(创建时调用只调用一次);}Overridepublic ServletConfig getServletConfig() {return null;}Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {//将其进行强制转换HttpServletRequest req (HttpServletRequest) servletRequest;HttpServletResponse res (HttpServletResponse) servletResponse ;//获取到请求的方式String method req.getMethod();//通过不同请求方式来进行判断if (GET.equals(method)){System.out.println(get………………);doGet(req,res);}else if (POST.equals(method)){System.out.println(post…………);doPost(req, res);}}protected void doPost(HttpServletRequest req, HttpServletResponse res) {}protected void doGet(HttpServletRequest req, HttpServletResponse res) {}Overridepublic String getServletInfo() {return null;}Overridepublic void destroy() {} } 3.5 urlPattern配置 Servlet要想被访问必须配置其访问路径(urlPattern) 一个Servlet,可以配置多个urlPattern WebServlet(urlPatterns {/demo1, /demo2}) //这两个路径都可以访问到这个页面urlPattern配置规则 精确匹配 配置路径WebServlet(urlPatterns “/user/select”) 访问路径localhost:8080/web-demo/user/select目录匹配 配置路径WebServlet(urlPatterns /user/) 访问路径localhost:8080/web-demo/user/扩展名匹配 配置路径WebServlet(urlPatterns “*.do”) 访问路径localhost:8080/web-demo/aaa.do localhost:8080/web-demd/bbb.do任意匹配 --尽量不要使用这个配置因为主要是因为会替换源文件的默认访问会导致静态资源等无法访问到 配置路径WebServlet(urlPatterns “/”) WebServlet(urlPatterns “/*”) 访问路径localhost:8080/web-demo/hehe localhost:8080/web-demo/hehe 和/*区别: 当我们的项目中的Servlet配置了“/”会覆盖掉tomcat中的DefaultServlet当其他的url-pattern都匹配不上时都会走这个Servlet 当我们的项目中配置了“/*”意味着匹配任意访问路径 注不要使用这两个路径会覆盖掉DefaultServlet导致无法加载出静态资源 优先级: 精确路径目录路径扩展名路径/* / 3.6 XML配置Servlet Servlet 从3.0版本后开始支持使用注解配置3.0版本前只支持XML配置文件的配置方式 步骤 1.编写Servlet类 2.在web.xml中配置该Servlet servletservlet-namedemo5/servlet-nameservlet-classcom.Smulll.web.servlet.servletDemo5/servlet-class /servlet servlet-mappingservlet-namedemo5/servlet-nameurl-pattern/demo5/url-pattern /servlet-mapping四、Request请求 4.1 Request简介 Request获取请求数据 4.2 Request继承体系 Tomcat需要解析请求数据封装为request对象并且创建request对象传递到service方法中使用request对象查阅JavaEE API文档的 HttpServletRequest 接口 4.3 Request 获取请求数据 一般分为三个部分 请求行 String getMethod()获取请求方式:GETString getContextPath()获取虚拟目录(项目访问路径):/request-demoStringBuffer getRequestURL()获取URL(统一资源定位符): http://localhost:8080/request-demo/req1String getRequestURI()获取URI(统一资源标识符): /request-demo/req1String getQueryString()获取请求参数(GET方式) :usernamezhangsanpassword123 //1. 获取到请求数据的方法String method req.getMethod();System.out.println(method);//2. 获取到虚拟地址String contextPath req.getContextPath();System.out.println(contextPath);//3.获取到访问地址String uri req.getRequestURI();System.out.println(uri);//4.完整地址StringBuffer url req.getRequestURL();System.out.println(url);//5. 获取到后面用户后面的值String queryString req.getQueryString();System.out.println(queryString);请求头 String getHeader(String name)根据请求头名称获取值 请求体usernamesuperbabypassword123 ServletlnputStream getInputStream()获取字节输入流BufferedReader getReader()获取字符输入流 4.4、Request通用方式获取请求参数 请求参数获取方式 GET方式 String getQueryString()POST方式 BufferedReader getReader()由于不同的请求方式出现不同的获取方式过于复杂所以就创建了统一的获取数据方法 MapString, String[ ] getParameterMap()获取所有参数Map集合String[ ] getParameterValues(String name)︰根据名称获取参数值数组)String getParameter(String name)根据名称获取参数值单个值) 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.Reader; import java.util.Map;WebServlet(/req1) public class RequestDom1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1. 通过获取到所有的key值MapString, String[] map req.getParameterMap();for (String key : map.keySet()) {System.out.print(key : );//2. 通过key值来获取到参数值String[] strings map.get(key);for (String value : strings) {System.out.println(value );}System.out.println();}//2. 通过名称来获取到当前的数据String username req.getParameter(username);String password req.getParameter(password);System.out.println(username);System.out.println(password);// 3. 通过获取到数组组合String[] values req.getParameterValues(hobby);for (String value : values) {System.out.println(value);}} } 4.5、请求参数中文乱码处理 请求参数如果存在中文数据则会乱码 解决方案 POST设置输入流的编码 req.setCharacterEncoding(“UTF-8”); 通用方式GET/POST先编码再解码 new String(username.getBytes(“ISO-8859-1”),“UTF-8”); URL编码 1.将字符串按照编码方式转为二进制 2.每个字节转为2个16进制数并在前边加上% Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username req.getParameter(username);String s new String(username.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);System.out.println(s);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding(UTF-8);String username req.getParameter(username);System.out.println(username);}4.6 Request请求转发 请求转发 在服务器内部的一种资源跳转方式 简单理解为 实现方式 req.getRequestDispatcher(资源B路径).forward(req,resp);请求转发资源间共享数据: 使用Request对象 1.void setAttribute(String name, Object o)存储数据到request域中 2.Object getAttribute(String name)根据key获取值 3.void removeAttribute(String name)根据key删除该键值对 请求转发特点 浏览器地址栏路径不发生变化只能转发到当前服务器的内部资源一次请求可以在转发的资源间使用request共享数据 req3 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;WebServlet(/req3) public class RequestDom3 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置键值对和值req.setAttribute(msg,hello Request!!);System.out.println(req3);//跳转req4进行解析数据req.getRequestDispatcher(/req4).forward(req,resp);} } req4 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;WebServlet(/req4) public class RequestDom4 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取到键值对的值Object msg req.getAttribute(msg);System.out.println(msg);System.out.println(req4);} } 五、Response响应 5.1 设置响应数据功能介绍 响应数据被分为三部分 响应行 HTTP/1.1 200 oK void setStatus(int sc)∶设置响应状态码 响应头 : Content-Type: text/html void setHeader(String name,String value)∶设置响应头键值对 响应体 : htmlheadheadbody/body/html PrintWriter getWriter():获取字符输出流ServletOutputStream getOutputStream():获取字节输出流 5.2 Response的重定向 概念 重定向就是一种资源跳转方式 实现方法 原始方法 //1. 定义响应的状态码resp.setStatus(302);//2. 设置状态头resp.setHeader(location,/tomcat1/resp2);简洁方法 String contextPath req.getContextPath();//获取到虚拟路径resp.sendRedirect(contextPath/resp2);重定向特点 浏览器地址栏路径发生变化可以重定向到任意位置的资源(服务器内部、外部均可)两次请求不能在多个资源使用request共享数据 5.3 资源路径问题 通过使用的对象进行判断 浏览器使用资源路径 需要添加虚拟路径服务端使用资源路径不需要虚拟路径 5.4 Response响应字符数据 使用: 通过Response对象获取字符输出流 PrintWriter writer resp.getWriter();写数据 writer.write(aaa);注意: 该流不需要关闭随着响应结束response对象销毁由服务器关闭中文数据乱码:原因通过Response获取的字符输出流默认编码:ISO-8859-1 package Response;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;WebServlet(/resp3) public class ResponseDom3 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1. 设置其的编码方式于读写内容的方式resp.setContentType(text/html;charsetUTF-8);//2. 获取输出流PrintWriter writer resp.getWriter();writer.write(h1你好 response/h1);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} } 5.5 Response响应字节数据 使用: 通过Response对象获取字符输出流 ServletOutputStream outputStream resp.getOutputStream();写数据 outputStream.write(字节数据);package Response;import org.apache.commons.io.IOUtils;import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream;WebServlet(/resp4) public class ResponseDom4 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 1. 创建一个字节输出流FileInputStream fis new FileInputStream(E://a.png);// 2. 创建一共字节输出流ServletOutputStream os resp.getOutputStream();/*byte[] bytes new byte[1024];int len;// 3. 写入数据while ((len fis.read())! -1){os.write(bytes,0,len);}*/IOUtils.copy(fis,os);fis.close();}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} } IOUtils工具类使用 导入坐标 dependencygroupldcommons-io/groupldartifactldcommons-io/artifactldversign2.6/version /dependency使用 IOUtils.copy(输入流,输出流);六、小练习 6.1 登录页面 html页面 %--Created by IntelliJ IDEA.User: LENOVODate: 2023/8/17Time: 10:47To change this template use File | Settings | File Templates. --% % page contentTypetext/html;charsetUTF-8 languagejava % html headtitleTitle/title /head body div styletext-align: centerform actionlogin methodget idloginForm姓名input typetext nameuname iduname br密码input typepassword nameupassword idupassword br验证码: input typetext nameverify idverifybrimg srchttps://ts4.cn.mm.bing.net/th?idOIP-C.rHuc8SKa0wLVwCqqA27uIwHaEtw313h199c8rs1qlt90o6dpr1.6pid3.1rm2 height30px; width45pxspan idmsg stylecolor: red ; font-size:12px; /spanbrbutton typebutton idloginBtn登录/buttonbutton typebutton idregisterBtn注册/button/form /div /body script typetext/javascript src./js/jquery-3.4.1.js/script script typetext/javascript$(#loginBtn).click(function(){//获取到用户名和密码和邮箱var uname $(#uname).val();var upassword $(#upassword).val();var verify $(#verify).val();//判断他们是否为空if(isNull(uname)){$(#msg).html(当前用户名不能为空);return;}if(isNull(upassword)){$(#msg).html(当前密码不能为空);return;}if(isNull(verify)){$(#msg).html(当前邮箱不能为空);return;}//如果都不为空就提交数据$(#loginForm).submit();});//创建一个方法来验证所获取到的物质是否为空function isNull(str){if(str null || str.trim() ){return true;}return false;}/script/html servletLogin页面 package com.huanglei.Serverlets;import com.huanglei.mapper.UserMapper; import com.huanglei.pojo.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;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.InputStream; import java.io.PrintWriter;WebServlet(/login) public class ServerletLogin extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.首先获取到传过来的数据String userName req.getParameter(uname);String userPassword req.getParameter(upassword);String verify req.getParameter(verify);//2.常规获取sqlsessionString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession sqlSessionFactory.openSession();UserMapper mapper sqlSession.getMapper(UserMapper.class);//通过查询来找到是否包含这个用户名User user mapper.selectAll(userName);//添加数据响应//首先设置其编/解码规范resp.setContentType(text/html;charsetutf-8);//获取writer对象PrintWriter writer resp.getWriter();//判断if (user null){//响应数据writer.write(h1不存在该用户请重新输入/h1);System.out.println(不存在该用户请重新输入);return;}//若存在该用户通过查询找到该密码是否正确String userPassword1 user.getUserPassword();//判断该用户密码是否正确if (!userPassword1.equals(userPassword)){writer.write(h1密码不正确请重新输入/h1);System.out.println(密码不正确请重新输入);return;}writer.write(登陆成功);System.out.println(登陆成功);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);} }6.2 注册页面 html %--Created by IntelliJ IDEA.User: LENOVODate: 2023/8/9Time: 9:05To change this template use File | Settings | File Templates. --% % page contentTypetext/html;charsetUTF-8 languagejava % html headtitle注册界面展示/title /head body div styletext-align: centerform actionregister methodpost idFormRegister用户名input typetext namername idrname br密码input typepassword namerpassword idr_password br确认密码: input typepassword nameRpassword idRpasswordbr邮箱: input typetext nameemail idemailbrspan idmsg stylecolor: red ; font-size:12px; /spanbrbutton typebutton idregisterBtn注册/button/form /div /body script typetext/javascript src./js/jquery-3.4.1.js/script script typetext/javascript function check() {//判断用户名长度是否超过8var name $(#rname).val(); // trim去除空格if (name.length 8 ) {$(#msg).html(用户名长度不能超过8);return false;}//用户名不能有数字for (var i 0; i name.length; i) {var str name.substring(i, i 1);if (isNaN(str) false) {$(#msg).html(用户名只能为字母或中文字符);return false;}}//判断密码是否大于6~12var password $(#r_password).val();if (password.length 6 || password.length 12 ) {$(#msg).html(密码长度必须在6~12之间);return false;}//判断密码为数字英文//邮箱中必须包含 和 .var email$(#email).val();if(email.indexOf()-1){$(#msg).html(邮箱中必须包含);return false;}if(email.indexOf(.)-1){$(#msg).html(邮箱中必须包含.);return false;}return true;}$(#registerBtn).click(function(){//获取到用户名和密码和邮箱var rname $(#rname).val();var r_password $(#r_password).val();var Rpassword $(#Rpassword).val();var email $(#email).val();//判断他们是否为空if(isNull(rname)){$(#msg).html(当前用户名不能为空);return;}if(isNull(r_password)){$(#msg).html(当前密码不能为空);return;}if(isNull(Rpassword)){$(#msg).html(当前确认密码不能为空);return;}if(isNull(email)){$(#msg).html(当前邮箱不能为空);return;}if (r_password ! (Rpassword)){$(#msg).html(密码与确认密码不相符合);return;}if (check()){alert(注册成功)//若都不为空就提交$(#FormRegister).submit();}});//创建一个方法来验证所获取到的物质是否为空function isNull(str){if(str null || str.trim() ){return true;}return false;}/script /html serverletRegister package com.huanglei.Serverlets;import com.huanglei.mapper.UserMapper; import com.huanglei.pojo.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;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.InputStream; import java.io.PrintWriter;WebServlet(/register) public class ServletRegister extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.首先获取到其输入的数据信息String userName req.getParameter(rname);String userPassword req.getParameter(rpassword);String email req.getParameter(email);//2. 首先判断其当中是否含有该用户// 常规获取sqlsessionString resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession sqlSessionFactory.openSession();UserMapper mapper sqlSession.getMapper(UserMapper.class);//通过查询来找到是否包含这个用户名User user mapper.selectAll(userName);//返回数据设置解码规则resp.setContentType(text/html;charsetutf-8);PrintWriter writer resp.getWriter();//判断是否包含该用户if(user ! null){writer.write(已经存在该用户);return;}//不存在该用户创建User类存储数据将数据加入到数据库User user1 new User();user1.setUserEmail(email);user1.setUserName(userName);user1.setUserPassword(userPassword);user1.setUserId(null);mapper.addTables(user1);sqlSession.commit();sqlSession.close();}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);} }
http://www.w-s-a.com/news/898460/

相关文章:

  • 微网站建设哪家便宜易优建站系统
  • 推荐做木工的视频网站毕业设计做的网站抄袭
  • 网站导航页面制作wordpress调用文章阅读量
  • app小程序网站开发品牌购物网站十大排名
  • 用wordpress做购物网站龙岩品牌设计
  • 网站开发是指wordpress系统在线升级
  • 网站建设运营的灵魂是什么意思页面跳转中
  • 家政服务网站源码重庆建网站企业有哪些
  • 怎样分析一个网站做的好坏重庆长寿网站设计公司哪家专业
  • 百度助手app下载苏州seo关键词优化排名
  • 17网站一起做 佛山诸城网站建设多少钱
  • 郑州网站建设培训学校泉州做网站设计公司
  • 西峡做网站深圳建筑工务署官网
  • 单县网站惠州seo计费
  • 万网网站建设 优帮云怎样用记事本做网站
  • 注册域名后网站建设百度指数的功能
  • 怎么做伪静态网站山西网站建设设计
  • 做小型企业网站多少钱衡阳市建设局网站
  • 金华专业网站建设公司网站建设空间和服务器方式
  • 自己做的网站在浏览器上显示不安全吗wordpress revolution slider
  • 西安网站建设推广优化搜索引擎营销
  • 互联网站备案管理工作方案 工信部注册深圳公司需要什么条件
  • 网站网站服务器网站建设 物流
  • 国外开发网站手机网站建设制作
  • 怎么把自己做的网站传网上青岛工程建设监理公司网站
  • 网站301跳转效果商丘网站公司
  • 公司网站建设西安网站的架构与建设
  • 食品科技学校网站模板花溪村镇建设银行网站
  • 图片渐隐 网站头部flash地方志网站建设自查报告
  • 深圳做商城网站视觉品牌网站建设