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中的编 ...
随机推荐
- LoadRunner接口测试Error -27225报错解决
今天依照规范写了一个接口测试脚本,再执行的时候报Error -27225,核对了接口字段和字段值没发现错误,百度搜Error -27225错误没有相关解释.这个问题经过溯源找到了问题的所在,为了互帮互 ...
- webpack打包编译时,不识别src目录以外的js或css
前端的dva项目开发时,遇到个很郁闷的问题,用es6的语法简单的export一个变量出来,在其他js中import使用,结果就报错了. export写法如下: const enUS = { acc ...
- ServletAPI的获取
Action中获取ServletAPI,三种方式 (1)通过ActionContext获取(只是获取并操作了域空间,并不是真正的ServletAPI对象) 在struts2框架中,通过Action的执 ...
- 一张图告诉你最流行的 7 个 JavaScript框架特点
欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~ AngularJ.js 由g ...
- FaceRank-人脸打分基于 TensorFlow 的 CNN 模型
FaceRank-人脸打分基于 TensorFlow 的 CNN 模型 隐私 因为隐私问题,训练图片集并不提供,稍微可能会放一些卡通图片. 数据集 130张 128*128 张网络图片,图片名: 1- ...
- Linux下 两台机器文件/文件夹 相互拷贝
Linux下 两台机器文件/文件夹 相互拷贝 设有两台机器 :A:*.101及 B:*.102. 把A下的.temp/var/a.txt拷贝到B机器的/text/目录下: 进入B机器:scp root ...
- python socket.error: [Errno 10054] 解决方法
我用的是python2.7 我搜网上10054错误解决方法的时候发现,大部分文章都是以python3为基础的,对于python2不适用. python socket.error: [Errno 1 ...
- Redis-消息发布与订阅
redis的消息发布与订阅适合做在线聊天, 消息推送 使用方法: 发布端: publish +频道名称 + 发布内容 订阅端: subscribe + 频道名称 发布端例子: 127.0.0.1:63 ...
- Presto向分区表快速插入数据时出现'target directory already exists'的原因
因为项目使用Presto作为ETL使用,需要将关系库中的数据导入到Hive中.目前关系库中的数据每天导入一次,在Hive中以天为间隔创建新的分区.思路是正确的,但是在使用的过程中,发现将少量关系库中的 ...
- 微信小程序开发
一.基本的准备工作 1.工具安装 工具是有微信官方提供. 2.下载地址: windows32位:https://servicewechat.com/wxa-dev-logic/download_red ...