发布于2021-06-08 12:52 阅读(625) 评论(0) 点赞(14) 收藏(4)
B/S架构(Browser/Server)是指基于浏览器/服务器的架构
JavaEE是基于分布式和多层结构的企业级应用开发规范和标准
传统的JavaEE组件JDBC、Servlet、EJB(Enterprise Java Beans)等
轻量级的框架结构Struts、Hibernate和Spring
Servlet 是Web服务器端的Java应用程序。
编写Servlet需要遵循其规范:
//创建一个Servlet类,继承HttpServlet
public class HelloServlet extends HttpServlet {
// 重写doGet()
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
//设置响应到客户端的文本类型为HTML
response.setContentType("text/html");
//获取输出流
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>
com.haiersoft.ch01.HelloServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
和元素通过name匹配
元素指定了访问地址 http://localhost:8080/ch01/hello
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZqDTQgVb-1622725122511)(C:\Users\MI\AppData\Roaming\Typora\typora-user-images\image-20210603194753750.png)]
方法 | 说明 |
---|---|
getParameter(String) | 单值读取,返回与指定参数相应的值。参数区分大小写,参数没有相应的值则返回空String,如果没有该参数则返回null。对于多个同一参数名则返回首次出现的值 |
getParameterValues(String) | 多个值的读取,返回字符串的数组,对于不存在的参数名,返回值为null,如果参数只有单一的值,则返回只有一个元素的数组 |
getPammeterNames() | 返回Enumeration的形式参数名列表,如果当前请求中没有参数,返回空的Enumeration(不是null) |
getReader()/getInputStream() | 获得输入流,如果以这种方式读取数据,不能保证可以同时使用getParameter()。当数据来自于上载的文件时,可以用此方法 |
请求报头名称 | 说明 |
---|---|
Accept | 浏览器可接受的MIME类型 |
Accept-Charset | 浏览器可接受的字符集 |
Accept-Encoding | 浏览器能够进行解码的数据编码方式 |
Accept-Language | 浏览器所希望的语言种类 |
Authorization | 授权信息 |
Connection | 表示是否需要持久连接 |
Content-Length | 表示请求消息正文的长度 |
Cookie | 向服务器返回服务器之前设置的cookie信息 |
Host | 初始URL中的主机和端口 |
Referer | 来源的URL |
User-Agent | 浏览器相关信息 |
方法名 | 描述 |
---|---|
getAuthType() | 描述了客户采用的身份验证方案 |
getContentLength() | 返回请求中Content-Length HTTP标题的值上下文长度 |
getContentType() | 返回请求中Content-Type HTTP标题的值上下文长度 |
getHeader() | 返回指定标题域的值 |
getHeaderNames() | 返回一个包含所请求头名称的Enumeration类型的值 |
getPathInfo() | 返回servlet路径以后的查询字符串以前的所有路径信息 |
getPathTranslated() | 检索servlet(不包括查询字符串)后面的路径信息并把它转交成一个真正的路径 |
getRequesURI() | 返回URL中主机和端口之后,表单数据之前的部分 |
getQueryString() | 返回一个URL查询字符串 |
getRemoteAddr() | 返回远程服务器地址 |
getRemoteHost() | 返回远程服务器名 |
getRemoteUser() | 返回由HTTP身份验证提交的用户名 |
getMethod() | 返回请求中使用的Http方法 |
getServerName() | 返回服务器名 |
getServerPort() | 返回服务器端口号 |
getProtocol() | 返回服务器协议名 |
getCookies() | 返回Cookie对象数组 |
响应头 | 说明 |
---|---|
Content-Encoding | 用于标明页面在传输过程中的编码方式 |
Content-Type | 用于设置servlet输出的MIME(Multipurpose Internet Mail Extension)类型。在Tomcat安装目录下的conf目录下,有一个web.xml文件,里面列出了几乎所有的MIME类型和对应的文件扩展名。正式注册的MIME类型格式为maintype/subtype,如text/html、text/javascript等;而未正式注册的类型格式为maintype/x-subtype,如audio/x-mpeg等 |
Content-Language | 用于标明页面所使用的语言,例如en、en-us等 |
Expires | 用于标明页面的过期时间,可以使用这个来在指定的时间内取消页面缓存(cache) |
Refresh | 这个报头表明浏览器自动重新调用最新的页面 |
响应头 | 说明 |
---|---|
setContentType(String mime) | 该方法用于设置Content-Type报头。使用这个方法可以设置Servlet的MIME类型,甚至字符编码(Encoding),特别是在需要将Servlet的输出设置为非HTML格式的时候 |
setContentLength(int length) | 设置Content-Length报头 |
addCookie(Cookie c) | 设置Set-Cookie报头(有关Cookie的内容请参见第二章) |
sendRedirect(String location) | 设置Location报头,让Servlet跳转到指定的url |
Servlet处理完数据后进行页面跳转的两种主要方式,重定向和请求转发
//代码
response.sendRedirect(request.getContextPath() + '/myservlet');
//代码
RequestDispatcher rd=request.getRequestDispatcher("/myservlet");
rd.forward(request,response);
forward()只能将请求转发给同一个Web应用中的组件,
sendRedirect方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到其他站点的资源。
sendRedirect()方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而调用forward()方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。
forward()方法的调用者与被调用者之间共享相同的request对象和response对象;而sendRedirect()方法调用者和被调用者使用各自的request对象和response对象,它们属于两个独立的请求和响应过程。
如果你发现文章有什么问题,欢迎留言指正。
如果你觉得这篇文章还可以,别忘记点个赞加个关注再走哦。
如果你不嫌弃,还可以关注微信公众号———梦码城(持续更新中)。
梦码在这里感激不尽!!
作者:飞翔公园
链接:http://www.javaheidong.com/blog/article/219609/3a46fffb69ffbdec0f3d/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!