博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
servlet总结
阅读量:5010 次
发布时间:2019-06-12

本文共 7644 字,大约阅读时间需要 25 分钟。

一)设置响应参数

1)通过response.setContentType()来设置返回内容的编码等。

1 response.setContentType("text/html;charset=utf-8");

 

 2)通过response.setHeader()或者response.addHeader()来设置header一些属性。比如3秒之后进行跳转:

1 response.setHeader("refresh","3;url=/");

 二)servlet总结

继承关系:

servlet---->GenericServlet---->HttpServlet---->自定义的servlet方法。

servlet的方法:

1)destroy()

销毁servlet。

2)getservletConfig() 该方法了解。

获取servletConfig对象,该对象伴随servlet的创建而创建,伴随servlet销毁而消失。储存数据针对的对象只是servlet的实例本身。而不是共享所有的servlet实例。

该对象可以获取servlet实例的一些属性比如说:servlet name  init-param等。

常用方法:

java.lang.String    getInitParameter(java.lang.String name 获取servlet初始化的参数。

java.util.Enumeration<java.lang.String>    getInitParameterNames() 获取所有初始化的参数。

ServletContext    getServletContext()   获取servlet的上下文管理器。

java.lang.String    getServletName() 获取servlet名字。

这些方法获取的值都是和web.xml一一对应。

1     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 2         ServletConfig config=this.getServletConfig(); 3         String name=config.getServletName(); 4         String val=config.getInitParameter("user"); 5         System.out.println("单个参数:"+val); 6         Enumeration
enu= config.getInitParameterNames(); 7 while (enu.hasMoreElements()){ 8 System.out.print("参数:"); 9 System.out.println(enu.nextElement());10 }11 }

3)getservletContext()

获取上下文管理者,也称域对象,即储存的信息是对所有的servlet都共享的。伴随着项目的启动而产生,伴随着项目的关闭和服务器关闭而消失。

对象获取:

1)直接使用servlet对象获取:this.getContentTex()

2)通过sevletConfig获取对象:servletConfig.getContText()

常用方法:

1)设置全局共享字段:

       java.lang.Object    getAttribute(java.lang.String name) 获取全局字段值。

          void    setAttribute(java.lang.String name, java.lang.Object object) 设置全局字段。

         初始化值一般在init方法中。          

1     @Override2     public void init() throws ServletException {3         ServletContext con=getServletContext();4         con.setAttribute("count",0);5         System.out.println("--------------------");6         System.out.println("初始化成功!");7         System.out.println("---------------------");8     }

 

    只有这样的情况下,才能用getAttribute()获取共享数据!

2)获取资源:

         java.lang.String    getRealPath(java.lang.String path) 获取文件实际路径。需要注意的是虚拟路径。以WEB-INFO开头。Returns a String containing the real path for a given virtual path.

       例子:    

1     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {2         ServletContext con=this.getServletContext();3         String path=con.getRealPath("/WEB-INF/classes/db.properties.properties");4         System.out.println(path);5     }

                        java.io.InputStream    getResourceAsStream(java.lang.String path) 获取IO流

      例子: 

1         ServletContext con=this.getServletContext();2 //3 //4         InputStream inp=con.getResourceAsStream("/WEB-INF/classes/1.properites");5 //        System.out.println(login_Servlet.class.getClassLoader().getResourceAsStream("db.config.properites"));6         System.out.println("-----------------");7         System.out.println(inp);8         System.out.println("-----------------");

需要注意:

        这里getResourceAsStream的目录为:/WEB-INFO/classes/文字名字,在src当前目录配置文件需要加上这个虚拟的目录!

 

3)获取初始化参数:

         java.lang.String    getInitParameter(java.lang.String name)单个获取。

                        java.util.Enumeration<java.lang.String>    getInitParameterNames();获取多个初始化参数。                    

1 @WebServlet(name = "Servlet_Config") 2 public class Servlet_Config extends HttpServlet { 3     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 4         ServletContext con=this.getServletContext(); 5         Object para=con.getInitParameter("username"); 6         System.out.println(para); 7     } 8  9     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {10 11     }12 }

    需要注意的是:

    这里是参数的初始化,和servletConfig不一样。需要在web.xml里进行配置是标签<context-param>而不是<init-param>这个标签:

1       
Servlet_Config
2
jd.com.servlet.Servlet_Config
3 4
5
user
6
root
7
8
9
password
10
12345
11
12
3
13 14
15
username
16
evil
17
18
19
Servlet_Config
20
/config
21

4)获取文件的mime类型:

                        java.lang.String    getMimeType(java.lang.String file) 需要注意的是:如果是可以识别直接返回类型,如果不可以识别的是返回null。

        Returns the MIME type of the specified file, or null if the MIME type is not known.

1     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {2         ServletContext con=this.getServletContext();3         String path=con.getRealPath("/WEB-INF/classes/db.properties.properties");4         System.out.println(path);5         System.out.println(con.getMimeType("5.html"));6     }

 

 

4)init(getservletConfig,config)

servlet初始化。在GenericServlet中,有init的方法重载,所以我们一般写这个,是不带参数的init()方法。A convenience method which can be overridden so that there's no need to call super.init(config).

例子(需要在servlet方法中进行方法重载):

1 public class login_Servlet extends HttpServlet { 2     @Override 3     public void init() throws ServletException { 4         ServletContext con=getServletContext(); 5         con.setAttribute("count",0); 6         System.out.println("--------------------"); 7         System.out.println("初始化成功!"); 8         System.out.println("---------------------"); 9     }10 }

 

初始化那个servlet需要在web.xml中进行注册,标签:<init-param>  是,servlet>的子标签。

1     
2
Servlet_Config
3
jd.com.servlet.Servlet_Config
4 5
6
user
7
root
8
9
10
password
11
12345
12
13
3
14
15 16
17
Servlet_Config
18
/config
19

 

 

其中需要注意 该初始化执行顺序,是通过<load-on-startup>来确定这个初始化的优先执行顺序,其中需要注意值越小优先级越大,其中1 是tomcat的webxml的default 初始化的执行顺序:

1     
2
default
3
org.apache.catalina.servlets.DefaultServlet
4
5
debug
6
0
7
8
9
listings
10
false
11
12
1
13

 

获取初始化参数通过Contenttext.getAttribute()方法来获取,通过setAttribute()方法来进行设置。

1                response.getWriter().print("登陆成功!");2                 response.getWriter().print("

账号密码:"+username+" "+pwd+"

");3 ServletContext con=getServletContext();4 Integer cishu= (Integer) con.getAttribute("count");5 cishu+=1;6 con.setAttribute("count",cishu);

 

5)service(HttpRequest req,HttpRespone,res)

该方法是处理request和response请求的服务,处理业务逻辑。servlet是单实例多线程服务。

三)我们在访问根目录的时候直接访问的是web的WEB-INFO下面的index.jsp

这是因为在tomcat的web.xml里配置默认servlet。 tomcat web.xml和咱们自己定义的servlet是继承关系。

1   
2
3
default
4
/
5
6 7
8
9
jsp
10
*.jsp
11
*.jspx
12

 

转载于:https://www.cnblogs.com/evilliu/p/8556653.html

你可能感兴趣的文章
python | 桶排序、冒泡排序、选择排序、去重
查看>>
两个Html页面之间值得传递
查看>>
EasyUI datagrid 的多条件查询
查看>>
Mac升级bash到最新版本
查看>>
利用vagrant打包系统--制作自己的box
查看>>
美女与硬币问题
查看>>
计算几何算法概览 (转)
查看>>
Notepad++的ftp远程编辑功能
查看>>
数据库多对多关联表(Python&MySQL)
查看>>
[实变函数]1.2 集合的运算
查看>>
第06天
查看>>
设计模式的征途—5.原型(Prototype)模式
查看>>
iOS10 app连接不上网络的问题
查看>>
结对开发之电梯调度最终稿(徐梦迪&刘博)
查看>>
simple java mail
查看>>
信息建模
查看>>
Mybatis 数据库物理分页插件 PageHelper
查看>>
虚函数、纯虚函数详解
查看>>
z-stack中数据的发送,广播、组播、点对点
查看>>
Practial Vim 学习笔记一
查看>>