您的位置:首页 > 其它

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

2016-03-27 22:12 369 查看
//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("密  码:<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 ByteArrayOutput
4000
Stream();
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");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet 线程安全