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

北京建网站公司价格成都宅天下装饰公司口碑

北京建网站公司价格,成都宅天下装饰公司口碑,腾讯公司,建网站 企汇网今日内容 零、复习昨日 一、接收请求 二、处理响应 三、综合案例 零、复习昨日 画图, 请求处理的完整流程(javaweb开发流程) 零、注解改造 WebServlet注解,相当于是在web.xml中配置的servlet映射 Servlet类 package com.qf.servlet;import javax.servlet.ServletException; im…今日内容 零、复习昨日 一、接收请求 二、处理响应 三、综合案例 零、复习昨日 画图, 请求处理的完整流程(javaweb开发流程) 零、注解改造 WebServlet注解,相当于是在web.xml中配置的servlet映射 Servlet类 package com.qf.servlet;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;/*** --- 天道酬勤 ---** author QiuShiju* desc* 注解WebServlet取代web.xml中的配置* 服务器运行时会处理这个注解* 根据注解后的参数匹配请求路径*/ WebServlet(/a) public class MyServlet1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(接收请求 );} }web.xml , 内容不用配置 ?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaee xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd version3.1!-- WebServlet(/a)可以取代以下配置-- !-- servlet-- !-- servlet-nameaServlet/servlet-name-- !-- servlet-classcom.qf.servlet.MyServlet1/servlet-class-- !-- /servlet-- !-- servlet-mapping-- !-- servlet-nameaServlet/servlet-name-- !-- url-pattern/a/url-pattern-- !-- /servlet-mapping--/web-app启动项目,访问/a路径即可 一、接收请求 需求: html页面中写一个表单,发送请求,后台服务器接收所有请求数据 1.1 编写页面 index.jsp或者index.html都行 % page contentTypetext/html;charsetUTF-8 languagejava % html body%--input必须加name属性因为后台服务器通过name获取输入框的值单选复选框选择框需要设置value属性后台服务器获得是value的值文件上传比较特殊后续单独讲暂时忽略 --% h1演示:servlet接收请求数据/h1 form action/req methodgettabletrtd用户名/tdtdinput typetext nameusername/td/trtrtd密码/tdtdinput typepassword namepassword/td/trtrtd性别/tdtdinput typeradio namesex value1男input typeradio namesex value2女/td/trtrtd爱好/tdtdinput typecheckbox namehobby value1唱歌input typecheckbox namehobby value2跳舞input typecheckbox namehobby value3rap/td/trtrtd生日/tdtdinput typedate namebirthday/td/trtrtd学历/tdtdselect namexloption value1大专/optionoption value2本科/optionoption value3研究生/option/select/td/trtrtd提交/tdtdinput typesubmit value提交/td/tr/table /form /body /html1.2 编写Servlet package com.qf.servlet;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.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;/*** --- 天道酬勤 ---** author QiuShiju* desc 演示接收请求数据*/ WebServlet(/req) public class MyServlet2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {/*** 请求中有请求方法,请求路径以及请求数据* ----------------------------------* 通过doGet方法参数1 HttpServletRequest req对象来获得请求数据* ps:当请求到达该类的这个方法时,该参数req就会被赋值,其中就有关于请求的所有东西*/String method req.getMethod( );String uri req.getRequestURI( );StringBuffer url req.getRequestURL( );System.out.println(method method);System.out.println(uri uri);// uri资源标识符System.out.println(url url);// url资源定位符// 获得请求数据[重点]/*** 获得请求参数的方法是* req.getParameter(key); key就是前端标签name值* [重点:] 后端获得的数据全都是字符串,如果需要后续使用,* 还需按照性质做相应的转换* 比如: 字符串转数字,字符串转日期*/String username req.getParameter(username);String password req.getParameter(password);String sex req.getParameter(sex);// int i Integer.parseInt(sex);String birthday req.getParameter(birthday);// SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd);// try {// Date parse sdf.parse(birthday);// } catch (ParseException e) {// e.printStackTrace( );// }String xl req.getParameter(xl);System.out.println(username username);System.out.println(password password);System.out.println(sex sex);System.out.println(birthday birthday);System.out.println(xl xl);// 多选框使用getParameterValues()String[] hobbies req.getParameterValues(hobby);for (String hobby : hobbies) {System.out.println(hobby hobby );}} } 总结: req.getParameter(“”) 能获得请求数据req.getParameterValues(“”) 能获得请求数据 1.3 配置web.xml 注解开发,不需要配置1.4 部署项目 1.5 启动测试 复习回顾 前端 html,css,js/jq 后端服务器: 1开发架构有哪些: b/s,c/s 2服务器是干什么的? 运行web项目项目容器接收请求,做出响应 3浏览器如何发出的请求 常见的如,a标签,form表单js中使用ajax发请求vue中使用axios发请求 4发请求后如何与后端servlet类关联的? (或者说绑定的?一一映射的?) 没注解时,通过web.xml文件一一映射关联有注解,通过注解WebServlet(“/路径”)中设置路径 5什么时候servlet类会执行doGet方法,什么时候执行doPost方法? 前端发get,后端就执行doGet前端发post,后端就执行doPost 6写出完整的项目(假设项目命名his)http请求路径,以登录(login)请求为例 协议://ip:端口/资源?kvkvjdbc:mysql://localhost:3306/java2313?useSSLfalseserverTimeZoneutchttp://localhost:8080/his/login?usernameadminpassword123456 7画图, 请求处理的完整流程(javaweb开发流程) 8具体如何接收请求中的数据? 通过HttpServletRequest对象接收请求中的数据通过req对象调用getParameter(“key”) 二、做出响应 做出响应是通过HttpServletResponse对象 响应正文 向浏览器展现的内容 package com.qf.servlet;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.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;/*** --- 天道酬勤 ---** author QiuShiju* desc 演示接收请求数据,响应内容*/ WebServlet(/req) public class MyServlet2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// ....// 演示响应/*** 响应是通过HttpServletResponse resp对象来完成* 响应可以设置响应内容(即展示在浏览器上的内容)* -----------------------------------------* ps: 其实响应也可以设置响应状态码,但是一般不需要,服务器会自动设置状态码* 但是需要知道一些常见状态码:* 200 成功, 404 资源未找到, 500 服务器内部错误,* 405 get/post请求方式不对,400 一般是数据解析出错了*/// 响应乱码,在响应前设置编码格式resp.setContentType(text/html;charsetutf-8);// 响应是通过输出流的形式实现PrintWriter out resp.getWriter( );//out.write(hello this is response - 这是响应);out.write(html);out.write(headtitle响应/title/head);out.write(body);out.write(h1这是响应的页面/h1);out.write(div stylecolor:reddiv/div);out.write(p stylecolor:redusername/p);out.write(/body);out.write(/html);} }三、乱码解决 请求乱码 req.setCharacterEncoding(utf-8);响应乱码 resp.setContentType(text/html;charsetutf-8);四、 综合案例-登录(Servlet JDBC) 要求实现登录功能 第一步: 先设计数据库库,表 (ORM,要根据表设置实体类) 登录页面html/jsp表单发送请求,携带数据 后台服务器代码servlet,接收数据jdbcormservlet,做出响应4.0 项目结构[重点] web开发有三层架构 控制层 -servlet 流程控制,是指整个请求响应的流程业务层 - service - 是指在请求接收后,对数据按照需求处理数据访问层 - DataAccessObject - DAO 4.1 数据库 CREATE TABLE tb_user (id int(11) NOT NULL AUTO_INCREMENT,username varchar(20) DEFAULT NULL,password varchar(20) DEFAULT NULL,sex char(1) DEFAULT NULL,money double(10,2) DEFAULT NULL,createTime date DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT7 DEFAULT CHARSETutf8 实体类 - ORM 需要创建一个包,专门存储实体类,一般命名pojo/entity/model public class User {// 列名对属性名private int id;private String username;private String password;private String sex;private double money;private Date createTime;// set get 构造 toString }4.2 pom依赖 !-- 引入servlet依赖 --dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.1.0/version/dependency!-- 引入jsp依赖 --dependencygroupIdjavax.servlet.jsp/groupIdartifactIdjavax.servlet.jsp-api/artifactIdversion2.3.1/version/dependency !-- mysql驱动 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.47/version!-- DbUtils依赖 --dependencygroupIdcommons-dbutils/groupIdartifactIdcommons-dbutils/artifactIdversion1.7/version/dependency/dependency4.3 登录页面 index.jsp body h2登录/h2 form action/login methodpost用户名input typetext nameusernamebr密码input typepassword namepasswordbrinput typesubmit value提交br /form /body4.4 控制层Servlet Servlet只负责接收请求数据,做出响应 如果要处理数据,那就调用业务层 package com.qf.servlet;import com.qf.model.Admin; import com.qf.service.AdminService; import com.qf.service.AdminServiceImpl;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.util.List;/*** --- 天道酬勤 ---** author QiuShiju* desc 命名* 功能层* LoginServlet* LoginService* LoginDao*/ WebServlet(/login) public class LoginServlet extends HttpServlet {Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 防止乱码req.setCharacterEncoding(utf-8);resp.setContentType(text/html;charsetutf-8);// 1 接收请求数据String username req.getParameter(username);String password req.getParameter(password);// servlet调用service(业务层)LoginService service new LoginService( );User user service.login(username, password);// 做出响应resp.setContentType(text/html;charsetutf-8);PrintWriter writer resp.getWriter( );if (user ! null) { // 登录成功writer.write(登录成功!);writer.write(user.toString());} else { // 登录失败writer.write(登录失败!用户名或密码错误);}} }4.5 业务层service 业务层就处理项目业务逻辑的,业务逻辑包含哪些内容? 除了servlet接收请求做出响应以及jdbc操作数据库的代码,其他全是业务逻辑 加密解密处理上传下载excel表格处理项目中数据格式计算项目中涉及金额缓存处理购物车,订单,支付短信,验证码,定时调度,推送…等等 业务层代码编码 需要创建包结构service LoginService public class LoginService {/*** 业务层要定义方法,能接收数据,处理后返回数据* -----* 登录一般返回的是实体类* - 登录成功,返回实体类对象中有数据* - 登录失败,返回实体类对象是null* ----------------------* 业务层需要调用数据层 操作数据库*/public User login(String username, String password){// 处理业务// ...// 处理后,要将数据继续传递给dao层LoginDao loginDao new LoginDao( );User user loginDao.login(username, password);return user;} }4.6 数据访问层dao 数据访问层 Data Access Object - DAO 项目需要创建dao层代码专门操作数据库 dao层编码 LoginDao public class LoginDao {public User login(String username,String password) {Connection conn null;PreparedStatement ps null;ResultSet rs null;try{Class.forName(com.mysql.jdbc.Driver);conn DriverManager.getConnection(jdbc:mysql://localhost:3306/java23132?useSSLfalse, root, 123456);ps conn.prepareStatement(select * from tb_user where username ? and password ?);ps.setString(1,username);ps.setString(2,password);rs ps.executeQuery( );while (rs.next()) {User user new User( );user.setId(rs.getInt(id));user.setUsername(rs.getString(username));user.setPassword(rs.getString(password));user.setSex(rs.getString(sex));user.setMoney(rs.getDouble(money));user.setCreateTime(rs.getDate(createTime));return user;}}catch (Exception e){e.printStackTrace();}finally {try {rs.close();ps.close();conn.close();} catch (SQLException e) {e.printStackTrace( );}}return null;} }4.7 测试 登录页面 登录成功 登录失败 4.8 总结 重点 熟悉开发的流程熟记开发架构 (控制层,业务层,数据访问层)响应拼接页面方式,了解即可前后端发请求,做响应 经验总结 1 写项目不要照抄,应该按照流程一步一步写 (前端–servlet–service–dao–service—servlet–前端) 2 学会看异常 前端页面报错404,405,500后端控制台要查看异常(注意几个关键词,Exception,error,caused by ,at …) 3 逻辑bug 前端页面没有报错,后端控制台有没有报错,但是结果不对这就是bug,该怎么解决?从头(按照流程)读,检查代码,去输出,高端玩家打断点 4 如果确定前端,后端,数据库都没问题,考虑缓存 idea缓存(file-invalidate cache)(删除target文件夹)浏览器缓存(清空) 5 学会倒推 五、注册功能 (如何写需求?建议当做用户,见到什么写什么,需要什么写什么) 注册 — 向数据库插入数据 5.1 跳转注册 5.2 注册页面 5.3 发请求,后端Servlet接收 注意接收的中文防止乱码 5.4 UserService 注意: 将之前的LoginService重命名为UserService,因为一个类中可以定义多个方法,不需要创建很多类 5.5 UserDao 注意日期bug,只能是java.sql.Date类型 5.6 UserDao返回给UserService 5.7 UserService在返回给RegistServlet 5.8 Servlet根据结果做响应 六、作业-查询全部 登录成功后查询全部,并展示全部
http://www.zqtcl.cn/news/163569/

相关文章:

  • 哈尔滨网站制作费用企业成品网站模板
  • 网络广告网站怎么做北京海淀建设中路哪打疫苗
  • 房地产公司网站制作电影发布网站模板
  • 如何利用开源代码做网站网站本科
  • 公司是做小程序还是做网站宜宾住房与城乡建设部网站
  • 做网站哪个公司最社区问答网站开发
  • 网站引量方法网站建设推广页
  • 书店网站的建设网络营销方法有哪些
  • 深圳网站优化软件顺企网怎么样
  • 做网站的需要什么要求中国五百强企业排名表
  • 网络营销 企业网站外贸响应式网站建设
  • 网站网页制作公司o2o平台是什么意思啊
  • 惠州市网站建设个人网站怎么进入后台维护
  • 微信网站链接怎么做wordpress 绑定手机版
  • 网站建设的内容是什么在线阅读小说网站怎么建设
  • 福州网站开发哪家比较好建设网站需要掌握什么编程语言
  • 邹平做网站的公司莱芜人才网莱芜招聘
  • 旅行网站开发意义怎样优化网络速度
  • 手机微网站建设多少钱拟定网络设计方案
  • 厦门制作公司网站安卓原生app开发工具
  • worldpress英文网站建设wordpress输出外部文章
  • u9u8网站建设商业公司的域名
  • 有学给宝宝做衣服的网站吗防网站黑客
  • 十大搜索引擎网站微信小程序有什么用处?
  • 团购网站 seo烟台网站建设方案优化
  • 公司网站建设招标文件范本公益永久免费主机
  • 建设银行网站查询企业年金五合一免费建站
  • 做网站开发挣钱吗做网站手机版
  • 网站建设案例精粹 电子书广州白云学校网站建设
  • 良品铺子网站制作用什么软件来做网站