Servlet---基础、转发重定向、编码问题解析
如何写简单的servlet
1)自定义一个servlet类实现servlet接口,实现接口就意味着实现接口的方法
public class AServlet implements Servlet{}
2)在web.xml文件中注册自定义的servlet
<!-- servlet标签用于向服务器注册一个servlet -->
<servlet>
<!-- servlet-name是我们使用的,我们使用这个servlet-name对servlet进行配置 -->
<servlet-name>AServlet</servlet-name>
<!-- servlet-class是自定义servlet的全类名,这个全类名是服务器使用,服务器用这个全类名创建一个servlet实例(对象) -->
<servlet-class>com.neuedu.Servlet.AServlet</servlet-class>
</servlet> <!-- servlet-mapping是用于做映射请求的 也就是输入什么地址会到当前servlet下处理-->
<servlet-mapping>
<servlet-name>AServlet</servlet-name>
<url-pattern>/AServlet</url-pattern>
</servlet-mapping> //注意:<url-pattern>标签中指定的映射路径不必和<servlet-name>指定的内容保持一致
只有浏览器地址栏中请求的url和<url-pattern>标签中的映射一致的时候,我们自定义的servlet类才会处理这个请求

- 构造方法:只会在第一次访问servlet类的时候调用一次,调用一次就说明 servlet是单例的,多线程的!同时也是非线程安全的,也就是说在servlet中尽量不要再service方法中操作全局变量!!
- init方法:只会在第一次访问servlet的时候调用一次,对servlet对象进行初始化操作
- 调用service方法处理请求:在每次访问这个servlet的时候都调用一次,而且我们的业务逻辑也写在service方法
- destroy 销毁:只会在项目卸载的时候调用,也就是服务器关闭,tomcat关闭的时候
1.转发 --地址不变 只请求一次 不能跨域
request.getRequestDispatcher("要转发到的地址").forward(request,response);//地址栏地址不变
2.重定向 --地址变了 多次请求 可以跨域
response.sendRedirect("要转到的地址");//地址栏地址变了
在jsp页面中写
<form action="abc" method="post">
用户名<input type="text" name="userid"><br>
密码<input type="password" name="pwd"><br>
<input type="submit">
</form>
//action method必须有,method为post或者get,使用get会在地址上显示你输入的值


- pageContext --当前页面存放, 只能在当前页面取出
- request --当前页面存放 ,转发页面取出
- session --当前会话 失效时间(在淘宝页面15分钟不动的话,再次动需要重新登陆)不能跨浏览器,换另一个浏览器需重新登录
- aqqlication --当前服务器中 整个服务器共享 服务器不重启就一直有
pageContext.setAttribute("a", "page");
request.setAttribute("a", "request");
session.setAttribute("a", "session");
application.setAttribute("a", "application");
${ a }//会将四个a全都取出来,但是根据优先级取出pageContext
${requestScope.a }//将取出request,将requestScope中的request换成session就取出session
<servlet>
<servlet-name>AServlet</servlet-name>
<servlet-class>com.neuedu.Servlet.AServlet</servlet-class>
</servlet>
<context-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</context-param>
String initParameter2 = config.getServletContext().getInitParameter("password");
System.out.println(initParameter2);
String initParameter2 = config.getServletContext().getRealPath(servletName);
System.out.println(initParameter2);
//getrealpath()获取真实路径
HttpServlet
public CServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet请求");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
request.getRequestDispatcher("1.html").forward(request, response);//通过request跳转到1.html
response.getWriter().println("<h3>hello world!</h3>");//可以返回给浏览器一个页面或者一个页面片段!
response.sendRedirect("/day0807-servlet/1.html");//服务器返给浏览器地址,浏览器需要再次访问服务器给的地址
|
|
发生在浏览器端还是服务器端
|
浏览器的请求次数
|
浏览器地址栏是否发生变化
|
浏览器是否能够感知到
|
|
request
|
服务器端
|
1
|
不变化
|
感知不到
|
|
response
|
浏览器端
|
2
|
发生变化
|
感知到
|
Servlet---基础、转发重定向、编码问题解析的更多相关文章
- Servlet中转发和重定向的路径问题【转】
转发和重定向的路径问题 Servlet中有两种方式获得转发对象(RequestDispatcher):一种是通过HttpServletRequest的getRequestDispatcher()方法获 ...
- servlet请求转发于重定向
请求的转发与重定向是Servlet控制页面跳转的主要方法,在Web应用中使用非常广泛. 一. 请求的转发 Servlet接收到浏览器端请求后,进行一定的处理,先不进行响应,而是在服务器端内部" ...
- servlet之转发与重定向的区别
转发(服务器端跳转): 一次请求 <jsp:forward> request.getRequestDispatcher("new.jsp").forward(requ ...
- JSP/Servlet基础语法
相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp ...
- JSP数据交互(二)和Servlet基础
01.Application原理与应用 01.application对象的作用域范围是整个应用服务,而它在应用中所承担的责任就类似于一个全局变量.只要服务启动,则application对象就会存在. ...
- Servlet基础知识总结
Servlet是JavaWeb应用开发的核心组件.Servlet运行在Servlet容器中(例如最常用的Tomcat),它可以为各种客户请求提供相应服务.Servlet可以轻松完成以下任务: 动态生成 ...
- servlet基础讲解
基本知识一.Web结构1.两种应用程序 ①桌面应用程序:QQ.CS.MyEclipse.Office.DW.360.浏览器等必须下载.安装.桌面快捷方式.注册表信息.操作系统后台服务.占用操作系统端口 ...
- Servlet基础知识
基本知识一.Web结构1.两种应用程序 ①桌面应用程序:QQ.CS.MyEclipse.Office.DW.360.浏览器等必须下载.安装.桌面快捷方式.注册表信息.操作系统后台服务.占用操作系统端口 ...
- java web基础 --- URL重定向Filter
java web基础 --- URL重定向Filter httpRequest.getRequestDispatcher("/helloWorld").forward(httpRe ...
- 【Java基础】让编码不再让你困惑
目录 1. ASCII编码 2. Unicode编码 3. UTF-8编码 4. UTF8.UTF16和UTF32之间的区别 5. GBK.GB2312和GB18030之间的区别 6. Java中的编 ...
随机推荐
- Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等
本节及后面的内容将会探索更加有意思的内容,更加逼近实际的使用的内容.我们本节内容不难,讲的是释放Ability时的信息传递: 第一步:创建一个GA称为GA_AOE_BlindVengeance,复仇忌 ...
- c++调用python系列(1): 结构体作为入参及返回结构体
最近在打算用python作测试用例以便对游戏服务器进行功能测试以及压力测试; 因为服务器是用c++写的,采用的TCP协议,当前的架构是打算用python构造结构体,传送给c++层进行socket发送给 ...
- 华为OJ之放苹果
题目描述: 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法.输入每个用例包含二个整数M和N.0<=m< ...
- 如何更换git托管
有时候会遇到需要更换代码托管平台,从github,gitlab或者Bitbucket迁移到其它平台,过程中可能遇到不少问题,本文从是否保留历史提交记录两种需求出发,介绍一下基于git托管平台的迁移方法 ...
- 前端十万个为什么(之一):我们为什么需要npm?
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } span ...
- python爬虫从入门到放弃(二)之爬虫的原理
在上文中我们说了:爬虫就是请求网站并提取数据的自动化程序.其中请求,提取,自动化是爬虫的关键!下面我们分析爬虫的基本流程 爬虫的基本流程 发起请求通过HTTP库向目标站点发起请求,也就是发送一个Req ...
- OpenCV探索之路(二十一)如何生成能在无opencv环境下运行的exe
我们经常遇到这样的需求:我们在VS写好的程序,需要在一个没有装opencv甚至没有装vs的电脑下运行,跑出效果.比如,你在你的电脑用opencv+vs2015写出一个程序,然后老师叫你把程序发给他,他 ...
- java中io流浅析
1.java.io包下File类:java程序中的此类的一个对象,就对应着硬盘中的一个文件或网络中的一个资源.File file1 = new File("d:\\io\\helloworl ...
- HDU 6069
Counting Divisors Problem Description In mathematics, the function d(n) denotes the number of diviso ...
- oAuth 认证
这段时间公司开发项目用到oAuth2协议,现在做一下梳理. CORS即Cross Origin Resouce Share,跨域资源共享:是W3C为防止脚本攻击,而制定的安全标准之一,它云溪浏览器向跨 ...