JAVAWEB---servlet

一、重点问题

ios提交数据不支持get请求

get提交解决中文乱码问题,在tomcat目录下改server.xml目录

javaweb项目中默认首页是可以改的,但是不建议改

设置字符编码集不区分大小写

只有post请求可以返回请求体长度

重定向会发两次请求,而转发只发一次请求

数据库表存储数据数据库本身并没有限制,而是电脑硬盘限制存储数据数量

二、课堂知识

第1节 Servlet是什么

1. 从广义上来讲,Servlet规范是Sun公司制定的一套技术标准,包含与Web应用相关的一系列接口,是Web应用实现方式的宏观解决方案。而具体的Servlet容器负责提供标准的实现,也就是tomcat为你创建对象

2. 从狭义上来讲,Servlet指的是javax.servlet.Servlet接口及其子接口,也可以指实现了Servlet接口的实现类

3. Servlet作为服务器端的一个组件,它的本意是“服务器端的小程序”。Servlet的实例对象由Servlet容器负责创建;Servlet的方法由容器在特定情况下调用;Servlet容器会在Web应用卸载时销毁Servlet对象的实例
​</pre>

第2节 Servlet的技术体系

1. Servlet接口:是sun公司针对于web技术提供的一套标准(接口)
2. GenericServlet:对servlet功能进行了封装和完善,将service方法保留为抽象方法,让使用者仅关心业务实现。
3. HttpServlet抽象类是对GenericServlet进一步封装和扩展更贴近HTTP协议下的应用程序编写,在service方法中根据不同HTTP请求类型调用专门的方法进行处理
4. 今后在实际使用中我们只需要继承HttpServlet并且实现doget和dopost方法即可。
5. ServletConfig接口:封装了Servlet配置信息</pre>

第3节 ServletConfig配置获取

// 在web.xml中配置

<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.qianfeng.servlet.HelloServlet</servlet-class>

<init-param>
<param-name>userName</param-name>
<param-value>admin123</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping></pre>

​​

image

</center>

在servlet组件中获取配置信息

//获取上下文ServletConfig
ServletConfig servletConfig = getServletConfig();
String userName = servletConfig.getInitParameter("userName");
System.out.println(userName);</pre>

第4节 Servlet使用

  • 使用Servlet接口实现Web的方式一

1. 使用eclipse创建JavaWeb动态工程 (2.5版本的web项目)
2. 添加jar包 javaee-api-7.0.jar
3. 创建MyServlet类,extend Servlet接口
4. 在web.xml中注册MyServlet类
5. 创建请求页面,编写业务代码</pre>

  • 使用GenericServlet类实现Web的方式二

GenericServlet类是对Servlet接口的进步一封装,并且将service方法抽象化,让用户将重心放在具体的业务上</pre>

  • 使用HttpServlet类实现Web的方式三

HttpServlet类是对GenericServlet类的更进步一封装,并且抽象出doGet、doPost方法,更方便用户处理前端发送过来的GET/POST请求


request对象的常用方法?
1. String getParamter(String name) : 返回指定name参数的参数值
2. String[] getParameterValues(String name) : 返回包含name参数的所有值
3. void setAttribute(String, object) : 存储此请求域中的数据
4. Object getAttribute(String) : 从域中取出对象
5. String getProtocol() : 返回请求中的协议类型及版本号
6. String getServerName() : 返回接受请求的服务器主机名
7. int getServerPort() : 获取服务器对应的端口号
8. String getCharacterEncoding() : 返回字符集编码
9. void setCharacterEncoding() : 设置请求的字符集编码
10. int getContentLength() : 返回请求体的长度【字节数】
11. String getRemoteAddr() : 返回发送此请求的客户端IP地址,返回的ip地址中的0代表任意浏览器都可以访问</pre>

第5节 转发和重定向

  • 请求转发

1. Servlet接受浏览器发送过来的请求之后进行初步处理而不是直接响应给前端页面,而是在服务器内部转发给其他的servlet程序继续处理,这种情况下浏览器只发出了一次请求,浏览器地址栏不会发生变化,用户不会感知到地址栏被转发
2. 转发请求的Servlet和目标Servlet共享同一个request对象
3. 转发可以访问WEB-INF目录下的资源

转发语法:
request.getRequestDispatcher("/ok.html").forward(request, response);</pre>

  • 请求重定向

1. Servlet接收到浏览器端请求并处理完成后,给浏览器端一个特殊的响应,这个特殊的响应要求浏览器去请求一个新的资源,整个过程中浏览器端会发出两次请求,且浏览器地址栏会改变为新资源的地址
2. 重定向的情况下,因为发送两次请求,所以原Servlet和目标资源之间就不能共享请求数据了
3. 重定向不能访问WEB-INF下的资源(因为重定向是客户端发出的动作)

重定向语法:
resp.sendRedirect("ok.html");</pre>

  • 转发和重定向的区别

| 转发和重定向 |
| | 转发 | 重定向 |
| 浏览器地址栏 | 不改变 | 改变 |
| 发送请求次数 | 1 | 2 |
| 能否共享request对象数据 | 是 | 否 |
| 目标资源:WEB-INF下的资源 | 能访问 | 不能访问 |

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349