Java web(一)-----servlet

http协议

超文本传输协议,规定了客户端和web服务器进行通信的标准语言,是一种无状态的协议,所以需要session和cookie记录信息

表单html

<from  action="" name="" method=""></from>

参数action:决定请求交由哪个action处理

参数name:标识名称

method:请求的方式,post,get

post:一样用于更新信息,把提交的数据放置在是HTTP包的包体中,一般我们提交表单使用的方法为post

get:一般用于获取数据,请求的数据会附在URL之后(就是把数据放置在请求行(request line)中),以?分割URL和传输数据,多个参数用&连接;那么传输数据就会受到URL长度的限制,且不如post安全,信息会被大家看见

Web容器

也叫servlet容器,用来执行servlet网页,流程是客户端发起一个http请求--http请求包含要处理的网页名称--web服务器向web容器寻求动态网页--web容器将执行环境设定好并加载相应的页面--执行结果转换成html给客户端

servlet网页以实例的方式加载到内存中,而且只会加载一次,单例模式,那么多个浏览器请求这个网页,web容器会为各个请求建立一条线程,存取相同的servlet实例

servlet使用Java EE的函数库,一个servlet的的生命周期会经历三个方法:

init()方法:被设计成只调用一次。它在第一次创建 Servlet 时被调用,用于 Servlet的初始化,初始化的数据,可以在整个生命周期中使用

service方法:执行实际任务的主要方法。 Servlet 容器(Tomcat、Jetty等)调用 service() 方法来处理来自客户端(浏览器)的请求,并把相应结果返回给客户端

destory方法:只会被调用一次,在 Servlet 生命周期结束时调用

ServletContext对象

存储在servletcontext对象的参数可供该context目录的所有servlet网页存取

提供setAttribute()方法和getAttribute()方法

ServletConfig对象

没有设置属性的方法,只供该servlet网页存取初始参数

如下,配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
   <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!-- servlet_context name 配置项目起始参数及值 该项目目录下的所有servlet网页使用 -->
  <context-param>
  <param-name>contentType</param-name>
  <param-value>text/html;charset=UTF-8</param-value>
  </context-param>
  
  <servlet>
  <servlet-name>Servlet01</servlet-name>
  <servlet-class>xidian.lili.servletConfigContext.Servlet01</servlet-class>
  
  <!-- servlet起始参数,仅供该servlet网页(Servlet1)使用 -->
  <init-param>
  <param-name>parameter</param-name>
  <param-value>Servlet1's parameter</param-value> 
  </init-param>
  </servlet>
  <servlet>
    <servlet-name>Servlet02</servlet-name>
    <servlet-class>xidian.lili.servletConfigContext.Servlet02</servlet-class>
 	<init-param>
 	<param-name>parameter</param-name>
 	<param-value>Servlet2's parameter</param-value>
 	</init-param>
  </servlet>

  
  <servlet-mapping>
  <servlet-name>Servlet01</servlet-name>
  <url-pattern>/servlet01</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Servlet02</servlet-name>
    <url-pattern>/Servlet02</url-pattern>
  </servlet-mapping>
  
</web-app>

创建Servlet01

package xidian.lili.servletConfigContext;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet01 extends HttpServlet{
	String parameter,contentType,bookName;
	/**
	 * 根据servlet名称获取ServletConfig对象
	 * 根据ServletContext名称获取servletContext对象
	 */
	public void init(){
		ServletConfig config=getServletConfig();
		parameter = config.getInitParameter("parameter");
		ServletContext context=getServletContext();
		contentType=context.getInitParameter("contentType");
		
		context.setAttribute("bookname", "Java JVM");
		bookName=context.getAttribute("bookname").toString();
	}
	public void doGet(HttpServletRequest rq,HttpServletResponse rp) throws IOException{
		rp.setContentType(contentType);//设定输出格式
		PrintWriter out=rp.getWriter();
		out.println("<html>");
		out.println("<head><title>Servlet01</title></head>");
		out.println("<body>");
		out.println("<h3>ServletConfig</h3>");
		out.println("<h3>Parameter value:</h3>"+parameter);
		out.println("<h3>ServletContext</h3>");
		out.print("<h3>书名: </h3>"+bookName);
		out.println("</html>");
		out.close();
	}
	public void doPost(HttpServletRequest rq,HttpServletResponse rp) throws IOException{
		this.doGet(rq, rp);
		
	
	}
}

创建Servlet02,有myeclipse自己创建

 

package xidian.lili.servletConfigContext;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet02 extends HttpServlet {

	String parameter,contentType,bookName;
	public void doGet(HttpServletRequest rq,HttpServletResponse rp) throws IOException{
		rp.setContentType(contentType);//设定输出格式
		PrintWriter out=rp.getWriter();
		out.println("<html>");
		out.println("<head><title>Servlet01</title></head>");
		out.println("<body>");
		out.println("<h3>ServletConfig</h3>");
		out.println("<h3>Parameter value:</h3>"+parameter);
		out.println("<h3>ServletContext</h3>");
		out.print("<h3>书名: </h3>"+bookName);
		out.println("</html>");
		out.close();
	}
	public void doPost(HttpServletRequest rq,HttpServletResponse rp) throws IOException{
		this.doGet(rq, rp);
		
	
	}

	/**
		 * Initialization of the servlet. <br>
		 *
		 * @throws ServletException if an error occurs
		 */
	public void init() throws ServletException {
		ServletConfig config=getServletConfig();
		parameter = config.getInitParameter("parameter");
		ServletContext context=getServletContext();
		contentType=context.getInitParameter("contentType");
		bookName=context.getAttribute("bookname").toString();
	}

}

结果:

可以看到放到ServletContext的对象所有servlet共享 

HttpSession对象

专门用来存放同一个客户端的东西,所以允许跨网页存取该对象的属性,当多个用户连接到web服务器上,就会产生很多HttpSession对象,用Session ID来区分,一般session ID会存放在客户端的Cookie中,客户端没有打开cookie,不能使用session,所以:

Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值