09 Servlet中间服务 连接前段和后端
import 导入 在当前类中使用外包中的类时使用
cookies 缓存
Alt + enter 提示快捷键
Servlet 服务 (连接前段和后端)
Servlet本质就是Java类
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
登录界面使用的是表单技术,现将其交互给后端
在Java程序中,不是基本类型的剩下的都是引用类型的。 (String字符串也是(类 首字母大写))
其中的格式:
eg: import javax.servlet.Servlet; // import 包名 + 类名
命名规范:
1.对于类名,变量名等标识符 组成部分: 数字 , 字母 , $ ,下划线(去看类名) 只有这四种其他都不行
在包命名时 , 可以用符号“.”这个点就相当于“/”是目录分割符
2.命名不能以数字开头
3.不能由关键字来命名 如:int 但是标识符可以包含关键字 如:int_a
4.对于类名来说首字母规范是大写的,其他一般小写
5.命名时,如果该标识符有多个单词组成,我们一般在后端服务程序中采用驼峰命名法。
后面的单词每个单词首字母大写。
6.见名知意 名字太长了,采用通用的缩写形式
java后台基本格式注释
HttpServletResponse response = (HttpServletResponse) servletResponse;
强制转换 左边是小范围的数据类型 变量名 = (小范围的数据类型)变量值;
对于引用类型来说,前提条件是等号两边前后的数据类型是有继承关系(父子关系)
int a = (int) 646121651;//跟上边模式基本一样
int int_a = 132;//再次强调int等关键词不能单独成为命名
response . setCharacterEncoding("UTF-8");//设置编码字符集
response.setContentType("text/html;charset=UTF-8");//防止中文乱码
response 通过响应setContentType设置响应类型text/html设置相应类型为文本html
response . getWriter() .write( "Servlet 很厉害");// I0流 input output 写出
response . getWriter() //具备可以往程序外写内容的功能
response 通过响应 getWriter 写出 write
http://localhost:8080/day9/hello
hello 请求后端服务器的资源路径
@WebServlet("/hello")
hello url路径映射
hello --> 映射到HelloServlet
HelloServlet --> 加载service()功能(方法)
service() ---> response.getWriter().writer("Servlet很厉害");
@WebServlet("/请求资源路径")
web.xml配置的请求资源路径二者选其一
当两个都配置的时候,服务器是无法启动的。
500就是指后端的服务器代码有异常或者是错误
400/402 客户端问题 请求资源找不到
网站名域名注释:
http://localhost:8080/day9/hello
组成部分:网络协议://域名(服务器名 》备案(ip + 域名)):端口号(8080)/部署在服务器上的虚拟目录/请求资源路径?name=张三&password=123456 域名是自定义的 idea的默认端口号63342 , 每个软件都有自己的端口号 ?name=张三&password=123456 请求资源路径携带的请求参数 ?是分割前面的请求资源路径和后面的参数 如果请求参数有多个的话,用“&”连接
部署在服务器上的虚拟目录hello
如果没有端口号:说明他用的端口号是80 (80可以不写)
在servlet-class标记中,里面需要填写类(全路径:包名+类名)全先定类名
登录页面例题:
前台显示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!--页面标题-->
<title>登录页面</title>
</head>
<body>
<!-- <form> 表单 录入数据,把数据传输给后端服务器
action:执行url动作 请求的资源路径
<input>标记是form表单标记中的一个高频使用的标记
input 标记中type=submit 表达的是 想把from表单中的所有数据打包成from 形式提交给后端服务器
如果type=button 那么该按钮就是一个简单的普通按钮,具备鼠标点击的功能
-->
<form action="login">
<!--输入框 input 行标签 不能设置宽与高,不独占一行 为什么登录不用name
type 格式,(在这里是选择格式) text 是文本类型 password 是密码,口令 submit 递交登陆 这三个都是固定格式
name赋名 value 赋名 placeholder 占位符(只显示,不占位置)
-->
<input type="text" name="username" placeholder="用户名/邮箱/手机号"><br>
<input type="password" name="password" placeholder><br>
<input type="submit" value="登录" ><br>
<!--超链接 <a> 制定跳转的资源路径href -->
<a href="zuoye.html">忘记密码</a> </form>
</body>
</html>
后台编码:
package com.zhiyou100; import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/login")
public class loginServlet implements Servlet { @Override
public void init(ServletConfig servletConfig) throws ServletException { } @Override
public ServletConfig getServletConfig() {
return null;
} @Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//转换成可支持Http协议的类
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
//设置可以接受带中文的文本信息 getParameter(“参数名称”)如果是表单参数 通过name属性值
request.setCharacterEncoding("UTF-8");
//设置可以相应给浏览器客户端支持的中文文本信息
response.setContentType("text/html;charset=UTF-8");
//凡是客户端提交的参数值,一般情况下
String username = request.getParameter("username");
String password = request.getParameter("password");
//假定 你的用户名是张三 密码123456
if (username.equals( "张三") && password.equals("123456")){//==换成equals()
//表明用户名和密码都正确
//恭喜你登陆成功!
response.getWriter().write("恭喜你登陆成功!"); }else{
//您的用户名不正确,请重新登陆
response.getWriter().write("您的用户名不正确,请重新登陆");
} } @Override
public String getServletInfo() {
return null;
} @Override
public void destroy() { }
}
09 Servlet中间服务 连接前段和后端的更多相关文章
- SSH服务连接
SSH基本概述 SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输.确保了数据传输安全. SSH服务 ssh: secure shell, protocol, 22/ ...
- 【Elasticsearch】【WEB】java web服务连接es elasticsearch始终报错,无法正常连接使用的错误解决历程
前情提要: web服务往华为云上迁移 ================内网的好环境,相关配置=================== 1.web服务关于ES的集群配置如下: elasticAddress ...
- Linux下部署ASP.NET服务连接oracle遇到的问题记录
一.如何卸载MONO Q:mono是linux系统上跨平台软件,卸载它有两种方式: 1.知道mono安装路径,安装原来的路径直接覆盖安装(最为简单): 2.不知道mono安装路径,首先通过sudo f ...
- ArcGIS SDE 10.1 for Postgresql 服务连接配置
去年写了ArcGIS 10.1 如何连接Postgresql 数据库(http://blog.csdn.net/arcgis_all/article/details/8202709)当时采用的也是Ar ...
- PS用户配置服务连接出错
PS用户配置服务连接出错 [2019-07-30 14:58:25.475]-[INFO ]-[xxxx.profileserver.service.ProfileServerImpl:1430][1 ...
- idea启动服务连接mysql后 Navicat连接mysql就报错2013-Lost connection toMySQL server at
我是使用navicat的windows端 连接centos下mysql服务器 第一次常规连接mysql正常,idea启动服务连接mysql后 Navicat连接mysql就报错2013-Lost co ...
- 抽取一部分服务端做BFF(Backend For Frontend服务于前端的后端)
Flutter+Serverless端到端研发架构实践 · 语雀 https://www.yuque.com/xytech/flutter/kdk9xc 2019-12-19 13:14 作者:闲鱼技 ...
- 【Node.js】二、基于Express框架 + 连接MongoDB + 写后端接口
在上节,我们讲了如何搭建express环境,现在我们说说如何通过node.js写服务接口给前端调用 1. 首先通过MongoDB建好数据库与表格 例如,我的数据库名字为db_demo,数据库表格为go ...
- Openstack入门篇(十八)之Cinder服务-->使用NFS作为后端存储
1.安装cinder-volume组件以及nfs [root@linux-node2 ~]# yum install -y openstack-cinder python-keystone [root ...
随机推荐
- 绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!
Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具,使得使用者无需开发任何代码就配置一个满足需求的接口.整个接口配置.测试.冒烟.发布,一站式都通过 ...
- 记一次GDB调试
目标文件: ciscn_2019_ne_5. 来源 :https://buuoj.cn/challenges 保护情况:保护是没有保护的 主要伪代码: int __cdecl main(int arg ...
- 超详细的 Vagrant 上手指南
搭建 Linux 虚拟机,别再用 VirtualBox 从 .iso 文件安装了. 概述 2020 年了,也许你已经习惯了 docker,习惯了在 XX 云上快速创建云主机,但是如果你想在个人电脑上安 ...
- Python-函数式编程-map reduce filter lambda 三元表达式 闭包
lambda 匿名函数,核心是作为算子,处理逻辑只有一行但具有函数的特性,核心用于函数式编程中 三元运算符 其实本质上是if分支的简化版,满足条件返回 if 前面的值,不满足条件返回 else后面的值 ...
- Python-对字典进行排序
案例: 某班英语成绩以字典的形式存储为: {'lili':78, 'jin':50, 'liming': 30, ......} 依据成绩高低,进行学生成绩排名 如何对字典排序? 方法1: #!/us ...
- 编程源自生活:抽象 -> 生活中的洗头问题
设计背景: 我:头上的油揩给了手,手接触洗手液.洗手液伤头皮,这样头皮就不会和洗手液接触了. 具体执行过程描述: 1.手揩油 -> 2.取液体 3.->洗手 我:这是什么设计模式 ...
- Oracle 按不同时间分组统计
1.按年 select to_char(record_date,'yyyy'), sum(col_8) as total_money from table_name where group by to ...
- RHSA-2017:2679-重要: 内核 安全更新(需要重启、存在EXP、代码执行)
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...
- C++时间函数小结
time time_t time (time_t* timer); 返回的值表示自1970年1月1日0时0分0秒(这个时间名叫 The Unix Epoch)起,到现在过去的时间,这里C/C++标准中 ...
- 【二分】CF Round #587 (Div. 3)E2 Numerical Sequence (hard version)
题目大意 有一个无限长的数字序列,其组成为1 1 2 1 2 3 1.......1 2 ... n...,即重复的1~1,1~2....1~n,给你一个\(k\),求第\(k(k<=10^{1 ...