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");
}
}
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");
}
}
相关文章推荐
- .NET中保证线程安全的高级方法Interlocked类使用介绍
- Java Servlet生成JSON格式数据并用jQuery显示的方法
- jsp和servlet中实现页面跳转的方式实例总结
- java servlet结合mysql搭建java web开发环境
- Servlet与JSP间的两种传值情况
- JSP、Servlet中get请求和post请求的区别总结
- jsp和servlet的区别探讨
- Struts2访问servlet分享
- java中Servlet处理乱码的方法
- Servlet 过滤器详细介绍
- Java线程安全中的单例模式
- JSP+Servlet+JavaBean实现登录网页实例详解
- servlet中session简介和使用例子
- 在Jsp Servlet中页面重新定向总汇
- JSP使用Servlet作为控制器实现MVC模式实例详解
- JSP使用Servlet过滤器进行身份验证的方法
- Servlet动态网页技术详解
- jsp和servlet操作mysql中文乱码问题的解决办法
- 深入线程安全容器的实现方法