Servlet开发(1)
Servlet开发
Servlet引入:
百度百科详细servlet介绍;
重点概括:servlet运行在服务器上,处理用户请求。
我们使用response来获取一个写方法 PrintWriter out=response.getWriter(); out.print("要输出的信息") 输出值到页面中。
在HelloWorldServlet类中我们输出信息。
package com.java1234.web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloWorldServlet extends HttpServlet { /**
*
*/
private static final long serialVersionUID = 1L; @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(request, response);
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
response.setCharacterEncoding("gbk");
PrintWriter out = response.getWriter();
out.print("<html>");
out.print("<head><title>Servlet开发</title></head>");
out.print("问候servlet tmd");
out.print("</html>");
out.close();
} }
HelloWorldServlet.java
web.xml文件配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>HeadFristJspServlet05</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.java1234.web.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/helloWorld</url-pattern>
</servlet-mapping>
</web-app>
web.xml
这个配置知识我们在学习JSP九大内置对象----config的时候学习过配置的基本过程和访问的时候跳转次序。
Servlet的生命周期
简单的概括分为四步:servlet类加载--->实例化---->服务----->销毁
我们使用一个例子看一下完整的过程
首先建一个类LifeServlet.java
package com.java1234.web; import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class LifeServlet extends HttpServlet{ /**
*
*/
private static final long serialVersionUID = 1L; @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("service服务开始啦");
this.doPost(request,response);
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out=response.getWriter();
out.print("servcice提供服务");
System.out.println("servcice提供服务!");
} @Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("销毁service");
} @Override
public void init() throws ServletException {
// TODO Auto-generated method stub
System.out.println("实例化service");
} }
LifeServlet.java
web.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>HeadFristJspServlet05</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>LifeServlet</servlet-name>
<servlet-class>com.java1234.web.LifeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LifeServlet</servlet-name>
<url-pattern>/life</url-pattern>
</servlet-mapping>
</web-app>
web.xml
当我们客户端访问life时
会出现:
当我们在一段时间内不使用或者访问的时候。容器认为servlet没啥鸟用了 所以就销毁。。。。
当然啦!init(初始化只会有一次)
这个我们可以从这里看到(我们在客户端请求了两次):
客户端跳转VS服务器端跳转
1、在Servlet中获取session,application
2、客户端跳转 response.sendRedirect(“目标地址”);
我们无法获取request的信息。
使用的类是
RedirectServlet.java 代码如下
package com.java1234.web; import java.io.IOException; import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class RedirectServlet extends HttpServlet{ /**
*
*/
private static final long serialVersionUID = 1L; @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(request, response);
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
request.setAttribute("requestKey", "request取值");//获取request
HttpSession session=request.getSession();
session.setAttribute("sessionKey", "session取值");//获取session
ServletContext application=this.getServletContext();
application.setAttribute("applicationKey", "applicaiton取值");//获取applicaiton
response.sendRedirect("target-redirect.jsp");//客户端跳转/重定向
}
}
RedirectServlet.java
跳转的目标文件:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>target-redirect</title>
</head>
<body>
<h1>Servlet取值</h1>
<h6>request值:<%=request.getAttribute("requestKey") %></h6>
<h6>session值:<%=session.getAttribute("sessionKey") %></h6>
<h6>application值:<%=application.getAttribute("applicationKey") %></h6>
</body>
</html>
target-redirect.jsp
web.xml配置信息:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>HeadFristJspServlet05</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.java1234.web.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/helloWorld</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>LifeServlet</servlet-name>
<servlet-class>com.java1234.web.LifeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LifeServlet</servlet-name>
<url-pattern>/life</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>RedirectServlet</servlet-name>
<servlet-class>com.java1234.web.RedirectServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RedirectServlet</servlet-name>
<url-pattern>/redirect</url-pattern>
</servlet-mapping>
</web-app>
web.xml
3、服务器跳转:使用的关键代码 RequestDispatcher rd=request.getRequestdispatcher(“目标地址”);rd.forward(request,response);
文件为 ForwardServlet.java
package com.java1234.web; import java.io.IOException; import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class ForwardServlet extends HttpServlet{ /**
*
*/
private static final long serialVersionUID = 1L; @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(request, response);
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
request.setAttribute("requestKey", "request取值");//获取request
HttpSession session=request.getSession();
session.setAttribute("sessionKey", "session取值");//获取session
ServletContext application=this.getServletContext();
application.setAttribute("applicationKey", "applicaiton取值");//获取applicaiton
RequestDispatcher rd=request.getRequestDispatcher("target-redirect.jsp");
rd.forward(request, response);
}
}
ForwardServlet.java
目标文件:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>target-redirect</title>
</head>
<body>
<h1>Servlet取值服务器</h1>
<h6>request值:<%=request.getAttribute("requestKey") %></h6>
<h6>session值:<%=session.getAttribute("sessionKey") %></h6>
<h6>application值:<%=application.getAttribute("applicationKey") %></h6>
</body>
</html>
target-redirect.jsp
配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>HeadFristJspServlet05</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.java1234.web.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/helloWorld</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>LifeServlet</servlet-name>
<servlet-class>com.java1234.web.LifeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LifeServlet</servlet-name>
<url-pattern>/life</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>RedirectServlet</servlet-name>
<servlet-class>com.java1234.web.RedirectServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RedirectServlet</servlet-name>
<url-pattern>/redirect</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ForwardServlet</servlet-name>
<servlet-class>com.java1234.web.ForwardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ForwardServlet</servlet-name>
<url-pattern>/forward</url-pattern>
</servlet-mapping>
</web-app>
web.xml
结果为
客户端和服务器对比一目了然!!
Servlet开发(1)的更多相关文章
- java web学习总结(五) -------------------servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- javaweb学习总结(五)——Servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- Servlet开发详解
一.Servlet简介 Servlet是sun公司提供的一门用于动态web资源的技术 sun公司在其API中提供了一个Servlet接口,用户若想开发一个动态web资源,需要完成两个步骤: 编写一个J ...
- JavaWeb---总结(六)Servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- javaWeb中servlet开发(5)——WEB开发模式:Mode I与Mode II
1.servlet开发 2.model I模式 客户端通过访问JSP,调用里面的javabean,而通过javabean调用处理数据库的操作,javabean中有专门处理数据库的操作,数据库主要以DA ...
- javaweb学习之Servlet开发(二)
javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个< ...
- Servlet开发配置
本文主要简单实践一下servlet开发相关开发 1.Servlet的创建 两种方法: 创建普通的java类,继承自HttpServlet类,在通过手动配置web.xml文件注册Servlet对象,比较 ...
- javaWeb中servlet开发——过滤器
servlet开发--过滤器(filter) servlet有三种,分为简单servlet.过滤器servlet.监听servlet 简单servlet是作为一种程序所必须的开发结构保存的,继承htt ...
- java web 学习五(servlet开发1)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- javaweb学习总结二十一(servlet开发入门、servlet生命周期以及调用过程)
一:servlet开发入门 servlet是sun公司一门开发动态web资源的技术,下面编写一个servlet入门程序: 1:在tomcat服务器webapps目录下新建firstServlet目录, ...
随机推荐
- core\stm32f10x.h(244): error: #67: expected a "}"
- iOS游戏开发之UIDynamic
iOS游戏开发之UIDynamic 简介 什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 ...
- Vue 路由知识二(工程模式下路由的配置)
vue-router是一个插件包,所以我们还是需要用npm/cnpm来进行安装的:npm/cnpm install vue-router --save-dev. 在路由的核心文件:src/router ...
- codeforces_1075_C. The Tower is Going Home
http://codeforces.com/contest/1075/problem/C 题意:一个长宽均为1e9的棋盘,n个垂直障碍在x列无限长,m个水平障碍在第y行从第x1列到x2列.可以水平和垂 ...
- day1 python 基础
# 一行注释"""多行注释"""print("hello world\n" * 3)name = "sure& ...
- Entity Framework 6.x介绍
一.简介 Entity Framework是一个ORM框架,可以在SQL Server,Oracle,DB2,MySQL等数据库上使用.其发展到现在已经到6.x版本了,同时该版本也是被官方所推荐使用. ...
- Java A
4.在ORACLE大数据量下的分页解决方法.一般用截取ID方法,还有是三层嵌套方法. 答:一种分页方法 <% int i=1; int numPages=14; String pages = r ...
- [转载]MyBatis mapper文件中的变量引用方式#{}与${}的差别
转载自:http://blog.csdn.net/szwangdf/article/details/26714603 默认情况下,使用#{}语法,MyBatis会产生PreparedStatement ...
- Spring Boot . 4 -- 定制 Spring Boot 配置 【2】
除了第一篇中使用 覆写的方式进行 自动配置的更改外,还可以通过 Spring Boot 中提供的 application.properties 文件改变应用的运行时配置.这种配置的方式粒度是非常精细的 ...
- show()的方向
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...