servlet的特点

一。servlet的特点,生命周期
单实例 非线程安全的 性能高于多实例
比如统计访问人数
Integer i=0;

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	synchronized (i) {
		i++;
	}
}

servlet实例化默认是在第一次访问时
loadOnStartup() default (int) -1; 第一次访问实例化
>=0任何值 都是在web服务器启动时
不带参数的init方法是在父类带参数的init方法中调用 如果重写了带参数的init方法 必须手工调用super.init(ServletConfig config)
public void init()
public void init(ServletConfig config) throws ServletException {

service方法 所有的请求都需要先经过service方法 service根据请求的类型决定调用doGet doPost
重写了service方法 添加 super.service(req, resp);
destroy方法
当容器销毁servlet实例时 自动调用 (容器关闭,自动reload模式启动后的源代码修改)

二。 工作中常用的快捷键
ctrl+H 搜索整个工作空间 找源代码
ctrl+O 搜索类中的方法
ctrl+L 通过异常 行号 定位源代码位置
ctrl+1 代码自动修正
ctrl+shift+R 通过名称找到某个资源
ctrl+shift+T 通过类名找到类的位置
ctrl+T 找到某个接口的实现类
alt+后退键
alt+/ 代码提示

三。请求转发和重定向
请求转发
一次请求 服务器端跳转 浏览器不知道跳转地址栏不会发生变化 参数可以传递 是同一个同一个请求对象
重定向
二次请求 客户端(浏览器)跳转 浏览器知道要跳转的路径 参数丢失 不是同一个同一个请求对象
跨域访问


import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.sql.SQLException;

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

//Servlet 必须继承HttpServlet
public class Test extends HttpServlet {
	//初始化方法Servlet在执行时会先执行这个方法
	public void init() {
		
	}
	//自动调用doget方法(业务处理方法)
	public void doGet(HttpServletRequest request,HttpServletResponse  response) throws IOException, ServletException {
		/*//设置响应的内容类型*/
		response.setContentType("text/html;charset=UTF-8");
		//获取输出流
		PrintWriter out=response.getWriter();
		
		String id=request.getParameter("stuId");
		
		String str=MysqlTest.query(id);
		
		out.println(str);
		//this.doPost(request, response);
	}
	public void doPost(HttpServletRequest request,HttpServletResponse  response) throws ServletException, IOException {
		System.out.println("doPost");
		//设置编码
		request.setCharacterEncoding("utf-8");
		response.setContentType("application/json;charset=utf-8");
		//获取参数
		String stuName= request.getParameter("stuName");
		String stuSex= request.getParameter("stuSex");
		String stuAge= request.getParameter("stuAge");
		
		/*try {
			Thread.sleep(10000);
		} catch (InterruptedException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}*/
		
		System.out.println("姓名:"+stuName+" 性别:"+stuSex+" 年龄:"+stuAge);
		
		
		try {
			MysqlTest.test(stuName, stuSex,stuAge);
		} catch (ClassNotFoundException | SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//页面跳转
		//request.getRequestDispatcher("index.html").forward(request, response);
		
		PrintWriter out=response.getWriter();
		out.write("{\"issuccess\":\"true\"}");
		

		
	}
	
	/*public void doPut() {
		
	}*/
	//销毁
	public void destroy() {
		super.destroy();
	}
}
package com.test;

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

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



public class Test extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
   
	public void init() {
			
	}
	public void doGet(HttpServletRequest request,HttpServletResponse  response) throws IOException {
		System.out.println("doGet");
		//设置响应的text格式为UTF-8
		response.setContentType("text/html;charset=UTF-8");
		
		PrintWriter pr=response.getWriter();
		//获取提交方法
		/*String str=request.getMethod();
	
		pr.write("提交方法:"+str);
		
		pr.write("获取参数的值:"+request.getParameter("id"));
		
		pr.write("获取项目名称:"+request.getContextPath());
		
		pr.write("获取请求的客服端地址"+request.getRequestURI().toString());
		
		pr.write("获取请求的客户端主机名:"+request.getRemoteHost());*/
		
		for (int i = 1; i <=10; i++) {
			pr.write("<h1>"+i+"</h1><br>");
		}
				
		
	}
	public void doPost(HttpServletRequest request,HttpServletResponse  response) throws IOException {
		System.out.println("doGet");
	
		
	}
	public void destroy() {
		super.destroy();
	}

}
package com.test2;

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

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns= {"/c"})
public class Demo4 extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		ServletContext sc = this.getServletContext();
		//初始化参数 
		String initParameter = sc.getInitParameter("url");
		System.out.println(initParameter);
		
		//提供了数据共享
		sc.setAttribute("sex", "a");
		sc.getAttribute("sex");
		
		//读取wed资源 相对路径
		InputStream ia = sc.getResourceAsStream("/a.txt");
		int available = ia.available();
		byte[] b=new byte[available];
		ia.read(b);
		ia.close();
		resp.getWriter().write(new String(b));
		//日志
		sc.log("呵呵");
	}
}


``

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Servlet是JavaEEWeb应用程序中的一种特殊组件,它能够动态地生成Web页面和响应客户端请求。下面是1000字Servlet特点: 1. 可以被多个客户端并发访问 Servlet的一个主要特点是能够同时处理多个客户端请求。Servlet容器会为每个请求创建一个新的线程,这些线程可以并发地访问Servlet。这意味着Servlet可以在同一时间内为多个客户端提供服务,而不会出现瓶颈或延迟。 2. 可以动态地生成Web页面 Servlet可以通过Java代码动态地生成Web页面。这意味着开发人员可以根据需要生成不同的页面,而不必为每个页面创建一个HTML文件。此外,Servlet可以访问数据库或其他应用程序,以生成动态的Web内容。 3. 可以处理各种类型的请求 Servlet被设计成可以处理各种类型的请求,包括HTTP、HTTPS、FTP等。这意味着开发人员可以使用Servlet来处理不同类型的请求,而无需为每种请求类型创建不同的组件。 4. 可以与其他组件集成 Servlet可以与其他JavaEE组件集成,如JSP、EJB、JMS等。这意味着开发人员可以将Servlet与其他组件结合使用,以实现更复杂的Web应用程序。 5. 可以使用各种Java技术 Servlet可以使用各种Java技术,如JavaBeans、JDBC、JNDI等。这使得开发人员可以使用他们熟悉的技术来开发Servlet,而无需学习新的技术。 6. 可以使用各种开发工具 Servlet可以使用各种开发工具,如Eclipse、NetBeans、IntelliJ IDEA等。这使得开发人员可以选择他们熟悉的工具来开发Servlet,而不必学习新的工具。 7. 可以实现安全性 Servlet可以实现Web应用程序的安全性。开发人员可以使用Servlet来验证用户的身份、授权用户访问特定页面等。此外,Servlet还可以使用SSL等协议来保护Web应用程序的数据传输。 8. 可以实现可扩展性 Servlet可以实现Web应用程序的可扩展性。开发人员可以使用Servlet来实现Web应用程序的各种功能,而无需修改现有的代码。此外,Servlet还可以使用JavaEE容器提供的各种API来扩展Web应用程序的功能。 9. 可以实现性能优化 Servlet可以实现Web应用程序的性能优化。开发人员可以使用Servlet来缓存数据、优化数据库访问等。此外,Servlet还可以使用JavaEE容器提供的各种API来优化Web应用程序的性能。 10. 可以实现跨平台性 Servlet可以实现Web应用程序的跨平台性。由于Servlet是用Java编写的,因此可以在任何支持Java的平台上运行。这意味着开发人员可以将Web应用程序部署到各种平台上,而无需修改任何代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值