文档章节

Servlet学习基础

西米火山
 西米火山
发布于 2016/12/11 17:07
字数 954
阅读 1
收藏 0
点赞 0
评论 0
                      **servlet:在服务端运行的程序区别于applet(在客户端运行)**

1.servlet的调用比较jsp

jsp:把编译好的jsp页面发布到服务器,服务器编译成java文件,然后将java文件发送到页面上,页面上然后在对java代码中的网页文件进行提取。(我们可以查看tomcat中的缓存文件,看到我们的jsp页面转换成了一个.class,一个.java)。

servlet:客户端请求服务器,服务器找到相应的(通过web.xml)servlet,servlet跟数据库进行沟通,servlet 将编译好的文件传给客户端浏览器,然后浏览器进行提取网页文件(如html等)。

2.servlet的创建步骤

  1. 创建一个普通JAVA类,并继承HttpServlet
public class HelloServlet extends HttpServlet
  1. 重写doGet/doPost/service方法中的其中一个
@Override
        //用于处理get请求
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
			doPost(req,resp);
	}

	@Override
        //用于处理post请求
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
			System.out.println("处理数据。。。。。");
			System.out.println("执行完毕。。。。。");
	}

        /**
	 * 用于处理get以及post
	 */
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("请求servlet,service方法被执行");
	}
  1. 在web.xml中配置(注册servlet)
 <!-- 配置servlet -->
  <servlet>
  		<servlet-name>hello</servlet-name>
  		<servlet-class>com.softeem.sevlet.HelloServlet</servlet-class>
  </servlet>
  <!-- 映射 -->
  <servlet-mapping>
  		<!-- 名字需和上面一样 -->
  		<servlet-name>hello</servlet-name>
  		<url-pattern>/hello</url-pattern>
  </servlet-mapping>

3.servlet的执行流程

服务器启动,tomcat对所有xml文件进行初始化检查,如果出现错误,则直接将错误信息提示到控制台,当客户端发起请求,容器(服务器)会检查请求的资源路径,通过资源去匹配url-pattern,通过对应的servlet-name找到指定的servlet-class进行执行,执行时,首先对servlet进行初始化(只初始化一次),然后根据客户端请求方式,寻找到对应的doGet/doPost进行执行;当服务器停止服务,容器会对所有的servlet进行销毁,并执行servlet中的destory()。

#4. servlet的生命周期 init --> doGet/doPost -->destory

  1. 当客户端请求第一次到达,容器会对指定的servlet进行初始化并调用init方法完成初始化
  2. 根据客户端请求方式(get,post)寻找servlet中的doGet/doPost执行,后续的多次重复访问不再执行init()
  3. 当服务器停止,则servlet会执行destory(),完成销毁

5.servlet的初始化参数

  1. 参数如下
    <!-- 初始化参数 -->
    <init-param>
    	<param-name>encoding</param-name>
    	<param-value>UTF-8</param-value>
    </init-param>
     <init-param>
    	<param-name>contentType</param-name>
    	<param-value>text/html</param-value>
    </init-param>

    /**例如,我们可以把服务端响应的编码方式,以及响应的类型设置初始化参数,然后我们只需要在使用的
        时候获取这个初始化参数即可
    */

6.servlet简单做一个登录

  1. 在login.jsp中有一个简单的登录框(这里的action对应web.xml中配置的urlpattern)
<form action="LoginServlet">   
   	USERNAME:<input type="text" name="username">
   	PASSWORD:<input type="password" name="password"/>
   	<input type="submit" value="登录">
</form>
  1. 我们在java中建一个LoginServlet类(myeclipse中可以直接建一个servlet),遵循我们之前介绍的步骤
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			doPost(request,response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			
			String uname = request.getParameter("username");
			String upass = request.getParameter("password");
			String encode = this.getInitParameter("encoding");
			String contentType = this.getInitParameter("contentType");
			//设置response编码
			response.setCharacterEncoding(encode);
			//设置响应的类型
			response.setContentType(contentType+";charset="+encode);
			
			PrintWriter pw = response.getWriter();
			if("admin".equals(uname.trim())){
				if("123456".equals(upass.trim())){
					pw.println("<script>alert('登录成功');window.location.href='main.jsp'</script>");
				}else{
					pw.println("<script>alert('密码错误');window.location.href='login.jsp'</script>");
				}
			}else{
				pw.println("<script>alert('账号错误或不存在');window.location.href='login.jsp'</script>");
			}
			pw.flush();
			pw.close();
	}
  1. web.xml中进行配置(这里要注意的是,我们启用服务器的时候一定要注意有没有报错,有的话就要去检查web.xml),如果我们是直接建立一个servlet的话,myeclipse会跟我们自动配置web.xml。

© 著作权归作者所有

共有 人打赏支持
西米火山
粉丝 4
博文 21
码字总数 26957
作品 0
武汉
程序员
JSP 学习总结---学习笔记

什么是JSP 1)为什么说,Servlet是一个动态Web开发技术呢? Servlet是基于服务端的一种动态交互技术, HttpServletRequest表示客户端到服务端的对象 HttpServletResponse表示服务端到客户端的...

知止内明 ⋅ 04/18 ⋅ 0

tomcat学习笔记之servlet 容器

1、servlet 容器用来处理请求servlet资源、为客户端封装Response 对象的模块 2、tomcat 容器分四种: Engine:整个Catalina servlet 引擎 Host:包含一个或多个Context 容器的虚拟主机 Cont...

职业搬砖20年 ⋅ 06/08 ⋅ 0

Servlet的一些细节--学习笔记

Servlet细节 1)浏览器访问的url-pattern只是一个符合格式的任意字符串,以/开头 2)一个Servlet的url-pattern可以是1个或多个,有二种形式; a).xx b)/xx/ 注意:/不能一起直接使用 3)/和....

知止内明 ⋅ 04/17 ⋅ 0

JavaWeb12-HTML篇笔记(二)

Ø 为什么学习JSTL: JSTL和EL结合 替换页面中<%%> Ø JSTL版本: JSTL1.0 :不支持EL表达式. JSTL1.1 和 1.2 :支持EL表达式. Ø JSTL的标签库:包含了五类标签. core(核心标签),fmt(国际化标签)...

我是小谷粒 ⋅ 05/28 ⋅ 0

JavaWeb开发比较重要的面试题

JavaWeb开发比较重要的面试题 1. 编码转换:怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 答:示例代码如下: String s1=”你好”; String s2=new String(s1.getBytes(“GB2312”...

xj_9264 ⋅ 05/06 ⋅ 0

web.xml中在Servlet中获取context-param和init-param内的参数

web.xml里面可以定义两种参数: 1.application范围内的参数,存放在servletcontext中,在web.xml中配置如下: <context-param> <param-name>context/param</param-name> <param-value>avalib......

村长大神 ⋅ 2014/10/27 ⋅ 0

web项目中web.xml的作用

每个javaEE工程中都有web.xml文件,那么它的作用是什么呢?它是每个web.xml工程都必须的吗? 一个web中可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。 web.xml文件是用来...

ChinaHYF ⋅ 04/27 ⋅ 0

【J2EE】之常用的接口和协议

前言 初接触J2EE,会遇到很多之前没有遇到过的术语,下面我们来简单地汇总一下这些接口和协议吧。 各大接口和协议详解 JDBC 1.定义:Java数据库连接 2.地位:用于Java应用程序连接数据库的标...

m18633778874 ⋅ 04/26 ⋅ 0

Servlet创建运行的过程--生命周期以及自动加载

前言 初学者像我这样的,刚开始学的时候一脸懵逼,为什么Servlet可以直接运行,明明没有入口啊 只是重写了Servlet中的方法。然后访问该地址怎么就直接运行了。 所以了解Serlvet的运行过程即生...

codingcoge ⋅ 06/12 ⋅ 0

Apache Qpid JMS AMQP 0-x 6.3.1 发布

Apache Qpid JMS AMQP 0-x 6.3.1 已发布。Qpid JMS AMQP 0-x 是兼容 JMS 1.1 的客户端,等同于 AMQP 0-8,0-9,0-9-1 和 0-10。Qpid JMS 是一个使用 Qpid Proton 协议引擎的 Java Message Ser......

淡漠悠然 ⋅ 05/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

jsonrpc-4j代码解析

解析文件 AutoJsonRpcServiceImplExporter JsonServiceExporter AutoJsonRpcServiceImplExporter 路径:com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImplExporter AutoJsonRpcServi......

郭恩洲_OSC博客 ⋅ 37分钟前 ⋅ 0

百度搜索

from selenium import webdriver import time brower=webdriver.Firefox() brower.get('http://www.baidu.com') input=brower.find_element_by_id('kw') input.send_keys('中南大学') time.s......

南桥北木 ⋅ 44分钟前 ⋅ 0

tomcat 日志记录器

1、日志记录器是记录消息的组件 日志记录器需要与某个servlet 容器相关联 2、Logger 接口 共定义了5种日志级别:FATAL、ERROR、WARNING、INFORMATION、DEBUGGER setVerbosity 设置级别 setC...

职业搬砖20年 ⋅ 45分钟前 ⋅ 0

Thrift RPC实战(三) Thrift序列化机制

1.Thrift基础架构 Thrift是一个客户端和服务端的架构体系,数据通过socket传输; 具有自己内部定义的传输协议规范(TProtocol)和传输数据标准(TTransports); 通过IDL脚本对传输数据的数据结构...

lemonLove ⋅ 45分钟前 ⋅ 0

网站建设就要像2018世界杯的俄罗斯队大杀四方[图]

今天心情不错,因为昨天晚上观看了世界杯比赛,尤其是对俄罗斯队的大杀四方感到十分霸气侧漏啊,因此我联想到了自己的博客网站,我的博客是去年年底上线的,一直想建设一个关于读书和读后感作...

原创小博客 ⋅ 54分钟前 ⋅ 0

Greenplum 三节点安装教程(非root用户)

Greenplum 三节点安装教程(非root用户) 环境准备 安装vmware,装三台centos 虚拟机设置: 主机名 IP 内存 硬盘 node1 Xxx1 2G 80G node2 Xxx2 2G 80G node3 Xxx3 2G 80G CSDN下载greenplum...

仔仔1993 ⋅ 55分钟前 ⋅ 0

linux 信号机制

signal(SIGPIPE, SIG_IGN); TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端只是收到FIN包. 按照TCP协...

xxdd ⋅ 56分钟前 ⋅ 0

SpringWind

环境搭建和系统部署

颖伙虫 ⋅ 今天 ⋅ 0

vim命令用法

第五章 vim命令 vim和vi几乎是一样的,唯一的区别就是当编辑一个文本时,使用vi不会显示颜色,而使用vim会显示颜色。 vim有三个模式:一般模式,编辑模式,命令模式。 系统最小化安装时没有安...

弓正 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部