2.Servlet线程安全和ServletConfig以及其它用法

//Servle 单例 + 线程安全
public class Demo18  extends HttpServlet {
private int counter = 0;
public void doGet(HttpServletRequest request, 
HttpServletResponse response)
throws ServletException, IOException {
//通过加锁的方式,对敏感数据进行代码同步(保证线程安全)
synchronized (this) {
this.counter++;
System.out.println("counter="+this.counter);
}
}

}

//ServletConfig的使用

public class Demo19 extends HttpServlet {
private ServletConfig config;
//读取web.xml文件的初始化参数
@Override
public void init(ServletConfig config) throws ServletException {
this.config = config;
/*String tel=config.getInitParameter("tel");
Enumeration<String> enums = config.getInitParameterNames();
while(enums.hasMoreElements()){
String key = enums.nextElement();
String value = config.getInitParameter(key);
System.out.println(key +":"+value);
}*/
}

public void doGet(HttpServletRequest request, 
HttpServletResponse response)
throws ServletException, IOException {
String encoding =  this.config.getInitParameter("encoding");
response.setContentType("text/html;charset="+encoding);
PrintWriter out = response.getWriter();
out.write("servletContext对象");
}
}

----------------------------------------------------------------

配置web.xml文件

<servlet>
    <servlet-name>Demo16</servlet-name>
    <servlet-class>gzt.servlet.Demo16</servlet-class>
    <!--通过在web.xml 文件中配代码,让servlet 在部署的时候就创建 -->
    <load-on-startup>2</load-on-startup>
  </servlet>
  <servlet>
  <servlet-name>Demo17</servlet-name>
    <servlet-class>gzt.servlet.Demo17</servlet-class>
  </servlet>
  <servlet>
  <servlet-name>Demo18</servlet-name>
    <servlet-class>gzt.servlet.Demo18</servlet-class>
  </servlet>
  <servlet>
   <servlet-name>Demo19</servlet-name>
    <servlet-class>gzt.servlet.Demo19</servlet-class>
    <init-param>
    <param-name>tel</param-name>
    <param-value>13198659735</param-value>
    </init-param>
    <init-param>
    <param-name>email</param-name>
    <param-value>986597357@qq.com</param-value>
    </init-param>
     <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

----------------------------------------------------------------

-----servlet 错误404

public class Demo17 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletOutputStream sos = response.getOutputStream();
sos.write("你输入的网址有误,进入114查询页面".getBytes("utf-8"));
}
}

-----servlet创建表单

public class Demo16 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
pw.write("<form method='' action='#' >");//action='**.html'
pw.write("用户名:<input type='text' name='username'/><br/>");
pw.write("密&nbsp;&nbsp;码:<input type='password' name='password'/><br/>");
pw.write("<select name='role'>");
pw.write("<option value='普通用户' selected>普通用户</option>");
pw.write("<option value='管理员'>管理员</option>");
pw.write("</select>");
pw.write("<input type='submit' value='提交'>");
pw.write("</form>");
}
}

---servlet 通知浏览器打开一张图片

public class Demo2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//通知浏览器打开一张图片
response.setHeader("content-type", "image/jpeg");
//输入流
InputStream is = new FileInputStream(new File("e:\\11.jpg"));
//输出流
OutputStream os = response.getOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while((len = is.read(buf)) > 0){
os.write(buf,0,len);
}
is.close();
os.close();
}
}

---servlet 压缩文件

public class Demo0 extends HttpServlet {


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String data="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
System.out.println("压缩前的长度:"+data.length());
//以下代码完成将String类型 压缩到byte[]数组中
ByteArrayOutputStream bout = new ByteArrayOutputStream();
GZIPOutputStream gout = new GZIPOutputStream(bout);
gout.write(data.getBytes());
gout.flush();
gout.close();
//取出压缩后的数据
byte[] buf = bout.toByteArray();
System.out.println("压缩后的长度:"+buf.length);

//将压缩后的数据输出到浏览器客户端
response.setHeader("content-encoding", "gzip");//压缩类型
response.setHeader("content-length",buf.length+ "");//指定长度

//服务端以字节方式输出
response.getOutputStream().write(buf);
}
}

---servlet 禁止缓存页面资源

public class Demo5 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//服务端控制各种浏览器  禁止缓存页面资源
response.setHeader("expires", "-1");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("pragma", "no-cache");
//服务端向浏览器输出内容
response.getWriter().write("haha");
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值