11 Servlet_03 关键字总结 资源跳转:重定项 键值对 继承类 do-get do-post Request域 Context域 =空针解决方法
知识点总结:
1.java里的关键字:
byte short int long 数据类型 (正整数)
char 数据类型(单字符型)
boolesn ture false 布尔类型
float double 数据类型(小数型)
public 公共的 开放的 权限修饰符
class 标记标签(html里的)
implements 实现(在继承中用到)
extends 继承(在继承中使用)
for for循环
while while循环
do do-while循环
if else 条件筛选 如果。。。那么。。
switch case default switch case语句,最后一个用default
static (poblic static void main(String[] args){ }) 静态 (使用于主程序)
void 同上 空集,无效的
import 输入 导入类库
package 包(包名)
break continue break是跳出循环 continue跳出本次接着循环
super 超 ,基 ,父 (继承)
public 公共的 开放的 权限修饰符 (上边有 )
protected 受保护的 权限修饰符 (不同包中的无关类(无父子关系)是无法访问的)
默认级别 权限修饰符省略
私有级别 (设置权限)
资源跳转:重定项
打开一个Java页面后首先是这样的
- package com.zhiyou100;
- import javax.servlet.Servlet;
- public class asdaa {
- }
然后在asdaa后面加上: implements Servlet
之后鼠标移到红线上然后Ait + Enter 再回车回车。
变为:
- package com.zhiyou100;
- import javax.servlet.*;
- import java.io.IOException;
- //跳转界面用到的路径名(在这里完成映射)
- public class asdaa 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 {
- }
- @Override
- public String getServletInfo() {
- return null;
- }
- @Override
- public void destroy() {
- }
- }
在最长的@下方输入:
- HttpServletRequest request = (HttpServletRequest) servletRequest;
- HttpServletResponse response = (HttpServletResponse) servletResponse;
- request.setCharacterEncoding("UTF-8");
- response.setContentType("text/html;charset=UTF-8");
- String order = request.getParameter("order");
- if("123".equals(order)){
- response.getWriter().write("该商品目前售价为:10000");
- }else{
- //没有此商品 跳转商品列表界面 http://localhost:8080/day11/find?order=123
- //重定项 sendRedirect("/虚拟目录/请求资源路径都可以")
- //response.getRequestDispatch("/请求资源路径").forward(request,response)
- //获取虚拟目录 context 上下文
- String path = request.getContextPath();
- //System.out.println(path); 不注释这一句就在双引号中加上/day11/
- 这里就是重定项:
- response.sendRedirect(path+"/路径名.html");//硬编码现象
- }
- //存储数据 key-value 键值对 双列数据结构 单列数据结构
- req.setAttribute("key", "value");
- //资源跳转 内部转发
- req.getRequestDispatcher("/路径名称").forward(req, resp);
//从request域对象中取出值 key-value 一 一对应
String username = context.getAttribute("取出的值").toString();
HttpServlet 继承类(最新最方便的):
HttpServlet 该类是继承的 把视线只聚焦在服务这一块
接口实现了Servlet接口,内部的五个功能代码全都封装起来
对service功能对外是需要实现的(重写的)
doGet()功能
doPost()功能
请求方式:get post delete put...
do-get和do-postget:
默认的请求方式就是get请求
特征:
1.数据是(显示展示数据长度是有限的数据的大小有限的。)明文展示
post
post请求是需要制定的
特征:
1.数据在地址栏中看不见
2.数据的长度几乎不限制
3.数据的大小不限制
4.相对于get方式比较安全
在httpServlet中 重写了service()和自定义其他7种请求方式的服务方法
在定义Servlet类,实现服务只能任选其中一种,不能并存
对于service()方法,已经过时了
一般选择doGet()或者doPost方法
Request域和Context域的区别:
HttpServletRequest
API 常用功能
获取请求方式
获取URL路径
获取web应用名称(虚拟目录)
获取请求的ip地址
获取get请求的表单数据
域对象
存储数据
HttpServletRequest类 可以临时性存放一些数据 容器
存储
查找(取出)
删除(移除)
从A服务中--->B服务中 资源跳转只能使用内部转发 在一次请求中存储数据
当一次请求结束时,在HttpServletRequest类对象中存储的数据也就消失了。
ServletContest类 可以长时间存储数据
只要服务器不关闭,那么在该ServletContext类对象中存储的数据就永远不会消失
所以一般会把ServletContext域中存储的数据在整个web应用中共享
是因为该ServletContext类对象只有一个
存储
查找(取出)
删除(移除)
HttpServlet 继承类创建过程:
首先打开一个java后台(这个a是我随意起的类名):
- package com.zhiyou100;
- public class a {
- }
在类名a后边输入: extends HttpServlet 然后回车,会变为:
- package com.zhiyou100;
- import javax.servlet.http.HttpServlet;
- public class a extends HttpServlet {
- }
接着在花括号里输入do-get或者do-post 回车,会变为:
- package com.zhiyou100;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- public class a extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- super.doGet(req, resp);
- }
- }
这就是创建do-get(do-post)环境。
get请求方式:
eg:- @Override//(现在就在doGet里 或者在 doPost里 最好指定doPost)
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
- request.setCharacterEncoding("UTF-8");
- response.setContentType("text/html;charset=UTF-8");
- //
- String email = request.getParameter("email");
- String password = request.getParameter("password");
- //封装数据
- response.getWriter().write("邮箱" + email + "<br>" +
- "密码" + password);
- }
post请求方式:
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- 同上
- }
这个等号可能产生空指针现象(指向对象不存在但是被引用),将两边颠倒可以避免空指针现象
前边可以为空,括号里面不可以
- if ("被赋值的值".equals(前边的值))
只需了解 不懂:
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- req.setCharacterEncoding("UTF-8");
- //super.doGet(req, resp); //超,基,父
- String mathod = req.getMethod();//请求方式
- String url = req.getRequestURL().toString();//请求URL
- // StringBuffer类 值是可变的 String类 字符串 值不可变
- //toString() 其他类型值转换成String类型值
- String path = req.getContextPath();//请求虚拟目录
- String ip = req.getRemoteAddr();//请求的ip地址
- //如果是get请求,可以一次性获取表单数据
- String data = req.getQueryString();//获取get请求的表单数据
- //展示获取的请求参数数据
- System.out.println("请求方式"+ mathod);
- System.out.println("当前客户端输出的url:"+ url);
- System.out.println("虚拟目录:"+ path);
- System.out.println("当前远程客户端所在的服务器访问的ip为:"+ip);
- System.out.println("get请求提交的表单数据为:"+data);
- }
- }
11 Servlet_03 关键字总结 资源跳转:重定项 键值对 继承类 do-get do-post Request域 Context域 =空针解决方法的更多相关文章
- java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)
1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UT ...
- 关于Servlet中的转发和重定项
一:转发 首先转发属于服务器内部行为,通过浏览器的地址栏是看不到URL变化的.比如说客户端发送一个请求到ServletA,ServletA接收到请求,但是没有能力处理,但是ServletA知道Serv ...
- 10 Servlet_02 资源跳转(主要是内部转发)与中文乱码问题
总的知识点: 1.小的知识点总结: alt + shift + r 重命名快捷键(可以给包和类以及项目重命名) 有序列表 ol li 无序列表 ul type 格式 text 是文本类型 passwo ...
- DotNetBar for Windows Forms 11.8.0.8冰河之刃重打包版
关于 DotNetBar for Windows Forms 11.8.0.8_冰河之刃重打包版 基于 官方原版的安装包 + http://www.cnblogs.com/tracky 提供的补丁DL ...
- C++11老关键字的新含义(auto, using,extern)
http://blog.csdn.net/cnsword/article/details/8034947 公司可以使用c++11.看大牛的代码模仿使用,所以现在已经不知道什么使用的是c++的语法还是c ...
- vim matchit 自定义配对关键字之间的跳转
vim因其强大的扩展性一直深受linux程序员的喜爱,最近在用vim写verilog的时候,由于一个逻辑块中的begin end较多,常常会多写或者漏掉匹配关键字,很是苦恼,于是寻找匹配关键字间跳转的 ...
- mysql 去除重复 Select中DISTINCT关键字的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记 ...
- 关于web项目中的资源跳转
1.跳转包括两种方式: 转发 forward 重定向 redirect 2.两种方式的代码: AServlet类: //向request范围中存储数据 request.setAttribute(&qu ...
- Keil的可重定位段
对于一个大的文件,为了便于管理,一个好的办法时把一个大文件分为若干个小文件,每个小文件包含一部分相关的功能,这样功能将显得很整洁,而且移植到其它工程的时候也很方便,把文件copy过去即可. 对于汇编, ...
随机推荐
- centos7下安装MySQL 5.7.26 二进制版本(免安装绿色版)
MySQL 5.7.26 二进制版本安装(免安装绿色版) 下载地址 https://downloads.mysql.com/archives/community/ https://cdn.mysql. ...
- java整合Elasticsearch,实现crud以及高级查询的分页,范围,排序功能,泰文分词器的使用,分组,最大,最小,平均值,以及自动补全功能
//为index创建mapping,index相当于mysql的数据库,数据库里的表也要给各个字段创建类型,所以index也要给字段事先设置好类型: 使用postMan或者其他工具创建:(此处我使用p ...
- gerrit安装配置记录
gerrit安装配置 java -jar gerrit-2.13.5.war init -d gerrit Authentication method [OPEN/?]: htt Install Ve ...
- springboot项目打包瘦身
默认情况下,Spring Boot 项目发布时会将项目代码和项目的所有依赖文件一起打成一个可执行的 jar 包.但如果项目的依赖包很多,那么这个文件就会非常大.这样每次即使只改动一点东西,就需要将整个 ...
- Layman H5+Webapp+MUI App 页面滑至到底部自动加载新的内容
要点:使用jquery的scroll()方法实现,当用户滚动指定的元素时,会发生 scroll 事件 scroll 事件适用于所有可滚动的元素和 window 对象(浏览器窗口) scroll() 方 ...
- jvm优化案例
案例1 survivor区太小,每次Minor GC存活的对象进入老年代,导致老年代可用空间不足,经常发生FULL GC,导致系统变慢 案例问题描述 有一个数据计算系统,从mysql和其他数据源提取数 ...
- C/C++常用头文件
原文来源:https://blog.csdn.net/thisispan/article/details/7470335 无聊的时候可以多看看: C/C++头文件一览C#include <ass ...
- 【学习笔记/题解】树上启发式合并/CF600E Lomsat gelral
题目戳我 \(\text{Solution:}\) 树上启发式合并,是对普通暴力的一种优化. 考虑本题,最暴力的做法显然是暴力统计每一次的子树,为了避免其他子树影响,每次统计完子树都需要清空其信息. ...
- Ubuntu通过Apache安装WebDav
使用KeePass保存密码,在个人服务器上安装WebDav协议. # 安装Apache2服务器 sudo aptitude install -y apache2 # 开启Apache2中对WebDav ...
- 程序员你是如何使用Nacos作为配置中心的?
假如你使用的是spring-cloud-alibaba微服务技术栈 单个服务独有配置文件 即去除应用程序的状态,配置统一外部化管理,方便进行水平的伸缩. 集成步骤: 假如我有一个应用app-desig ...