Servlet中的一些注意事项
servlet中的一些注意事项
1 什么是servlet?
1)Servlet是Sun公司制定的一套技术标准,包含与Web应用相关的一系列接口,是Web应用实现方式的宏观解决方案。而具体的Servlet容器负责提供标准的实现。
2)Servlet作为服务器端的一个组件,它的本意是“服务器端的小程序”。Servlet的实例对象由Servlet容器负责创建;Servlet的方法由容器在特定情况下调用;Servlet容器会在Web应用卸载时销毁Servlet对象的实例。
3)简单可以理解为 Servlet就是用来处理客户端的请求的.
2、Servlet开发规则
在实际开发中,通过继承HttpServlet来完成Servlet的开发
public class ServletDemo extends HttpServlet{
}
3、Servlet类的相关方法:
1、doGet : Servlet中用于处理get请求的方法
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
2、doPost : Servlet中用于处理post请求的方法
doPost方法中默认调用的是doGet的方法
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
3、service
在Servlet的顶层实现中,在service方法中调用的具体的doGet或者是doPost。在实际开发Servlet的过程中,可以选择重写doGet以及doPost 或者 直接重写service方法来处理请求。
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
HttpServletRequest request;
HttpServletResponse response;
try {
request = (HttpServletRequest) req;
response = (HttpServletResponse) res;
} catch (ClassCastException e) {
throw new ServletException("non-HTTP request or response");
}
service(request, response);
}
4、关于request和response
(1)request
request的作用有3个:
1、获取浏览器的请求参数,如:
String username = request.getParameter("username");
String password = request.getParameter("password");
2、获取项目的虚拟路径,如:
String contextPath = request.getContextPath();
3、转发
//获取转发器
RequestDispatcher requestDispatcher = request.getRequestDispatcher("WEB-INF/beautiful.html");
//进行请求的转发
requestDispatcher.forward(request, response);
(2)response
response的作用有2个:
1.给浏览器响应一个字符串或一个页面
//响应中文乱码的解决方案:在获取流之前设置响应的内容的类型及字符集
response.setContentType("text/html;charset=UTF-8");
PrintWriter writer = response.getWriter();
writer.write("响应成功!");
2.重定向
response.sendRedirect("WEB-INF/beautiful.html");
5、转发和重定向的区别
1.转发发送一次请求;重定向发送两次请求
2.转发浏览器地址栏地址无变化;重定向浏览器地址栏地址有变化
3.转发可以访问WEB-INF目录下的资源;重定向不可以访问WEB-INF目录下的资源
4.转发可以共享request域中的数据;重定向不可以共享request域中的数据
使用转发和重定向的场景
一般情况下,登录成功重定向,登录失败使用转发。
6、关于路径的解析问题
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- 可以通过base标签的href属性将当前页面中所有的相对路径变为绝对路径 -->
<base href="http://localhost:8080/Web_Ex/">
</head>
<body>
<a href="pages/login.html">我要登录</a><br>
<br>
<a href="">我要注册</a>
</body>
</html>
什么是绝对路径?
以 / 开头的路径即为绝对路径
/ 代表的意义:
如果路径由浏览器解析,那么 / 代表http://localhost:8080/
以下路径由浏览器解析:
1)HTML标签中的路径:如a标签中href属性中的路径、form标签中action属性中的路径等
2)重定向中的路径
如果路径由服务器解析,那么 / 代表http://localhost:8080/Web_project/
以下路径由服务器解析:
1)web.xml配置文件中url-pattern标签中的路径
2)转发中的路径
Servlet中的一些注意事项的更多相关文章
- servlet中urlpatterns注意事项
在servlet中, @WebServlet(urlPatterns="/newsAdd")接收 resp.sendRedirect("/wedding/houtai/N ...
- 如何运用spring将dao注入到servlet中?
1.servlet的init方法 public void init(ServletConfig config) throws ServletException { super.init(config) ...
- Servlet规范简介——web框架是如何注入到Servlet中的
Servlet规范简介--web框架是如何注入到Servlet中的 引言 Web框架一般是通过一个Servlet提供统一的请求入口,将指定的资源映射到这个servlet,在这个servlet中进行框架 ...
- web.xml中在Servlet中获取context-param和init-param内的参数
引自:http://blog.csdn.net/yakson/article/details/9203231 web.xml里面可以定义两种参数:1.application范围内的参数,存放在serv ...
- 关于spring中无法将service注入到servlet中的问题
首先,servlet是动态网页项目区别于普通的java项目的,是动态网页项目中web.xml主要配置文件管理的,而spring只能管理普通的pojo,而没办法直接注入,尽管你的注入方式和配置方式都没有 ...
- JSP+Servlet中使用jspsmartupload.jar进行图片上传下载
JSP+Servlet中使用cos.jar进行图片上传 upload.jsp <form action="FileServlet" method="post&quo ...
- Servlet中转发和重定向的区别
Servlet中页面的跳转有两种方式:转发和重定向. 1.转发和重定向的区别 ①转发是服务器行为,重定向是客户端行为. ②转发是浏览器发生了一次请求,重定向至少是两次请求. ③转发地址栏中的url不会 ...
- [转]servlet中的service, doGet, doPost方法的区别和联系
原文地址:http://m.blog.csdn.net/blog/ghyg525/22928567 大家都知道在javax.servlet.Servlet接口中只有init, service, des ...
- servlet中请求转发(forword)与重定向(sendredirect)的区别
摘自:http://www.cnblogs.com/CodeGuy/archive/2012/02/13/2349970.html 通俗易懂 servlet请求转发与重定向的区别: request.s ...
随机推荐
- C#读取DLL文件获取所有类
说明 调用Web.dll 文件,获取其中的所有的WebService 参考 https://blog.csdn.net/huoliya12/article/details/78873123 流程 使用 ...
- 设计模式之-Builder模式
场景引入: 一个类,如果有多个属性时,在创建对象,如何对属性进行赋值呢? 1.通过构造器赋值,这种方案优点时一次性赋值完成,但是多种属性的组合,导致构造器会非常多. 2.通过setter方法赋值,方案 ...
- Gitlab + Jenkins 构建,发布一个基于Go的Gin测试项目
部署Go项目简介 对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程: 方案一 • 开发者本地环境需要将环境变量文件改为正式环境配置 • 编译成可执行文件 • 发送给运维 • ...
- Mysql 实战关于date,datetime,timestamp类型使用
最近在做一个项目 项目中 不同的小伙伴同时在不同的业务模块中用到了date,datetime,timestamp这三个类型 特别是datetime,timestamp这两个 如果不能理解到位 其实很 ...
- git fork , git pull request那回事
git fork 原理 相当于你在原项目的主分支上又建立了一个分支,你可以在该分支上任意修改,如果想将你的修改合并到原项目中时,可以pull request,这样原项目的作者就可以将你修改的东西合并到 ...
- @Transactional注解失效的解决方案
一.前言 开发中我们经常使用 @Transactional注解来启用Spring事务管理,但是如果使用方法不当,会遇到注解不生效该事务回滚的地方却没有回滚的问题. 总结下一般是以下几个原因: @Tra ...
- 申请免费域名并配置DNS解析及CDN加速
标题: 申请免费域名并配置DNS解析及CDN加速 作者: 梦幻之心星 sky-seeker@qq.com 标签: [#申请,#免费,#域名,#DNS解析,#CDN加速,#子域名] 目录: [网站] 日 ...
- Mysql中的语句优化
1.EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划. 下面来个简单的示例,标注(1.2.3.4.5)我们要重点关注的数据: type列,连接类型.一个好的SQL语句至少要 ...
- 手把手教你搭建SSH框架(Eclipse版)
原文来自公众号[C you again],若需下载完整源码,请在公众号后台回复"ssh". 本期文章详细讲解了SSH(Spring+SpringMVC+Hibernate)框架的搭 ...
- #2020征文-开发板#使用Python开发鸿蒙应用--2021.01.07直播图文
写在前面: 每年的过年前夕,手中的项目一定会告急...而自己又缺乏三头六臂七十二变等特技,所以只能在鸿蒙社区先消失一阵子了.今天再看社区的帖子,发现大家的进步可不一般,各种案例示例层出不穷,一片欣欣向 ...