servlet 创建/生命周期-单例模式/session唯一/会话超时

来源:互联网 发布:mac pscs6破解安装教程 编辑:程序博客网 时间:2024/05/23 23:03

servlet的创建于java类的创建相同,需要提几点注意:

1.在servlet创建时,display,description设置为空

2.Servlet/JSP Name:是你的servlet命名称。

3.Servlet/JSP Mapping URL:是浏览器访问地址,通常只设置成“/自己的servlet名称”就行。



servlet创建好之后,我们看下它的xml文件信息:

文件中需要提几点注意,用注释写出来了:

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"    xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <servlet>    <servlet-name>HelloServlet</servlet-name><!--此处名字必须和下面的一样 -->    <servlet-class>web.HelloServlet</servlet-class><!--这是文件位置 -->  </servlet>  <servlet-mapping>    <servlet-name>HelloServlet</servlet-name> <!--此处名字必须和上面的一样 -->    <url-pattern>/HelloServlet</url-pattern><!--这是浏览器中的地址名字,注意在此加上/-->     </servlet-mapping>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file><!--这是欢迎页面,如果没有在地址栏写出要进helloservlet,那么就进来此处 -->  </welcome-file-list></web-app>


同时在NewServlet.java文件中,我们也需要注意以下几点:

如果用到中文,必须将注释的两行写上。因为原始是没有的这些代码的。

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");//如果要使用中文,必须添加这一行,response.setContentType("text/html;charset=utf-8");//同时在这一行的值中添加charset=utf8PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println("  <BODY>");out.print("    This is ");out.print("    This is ");out.print("    This is ");out.print("    This is ");out.print("    This is ");out.print(this.getClass());out.println(", using the GET method");out.println("  </BODY>");out.println("</HTML>");out.flush();out.close();}

这样,我们就创建好Servlet了。

在浏览器中敲入localhost/项目名/NewServlet即可看到上面一个代码所编写出来的页面。如果不敲入/NewServlet,则默认进入index.jsp页面


需要注意的是

1.doGet方法和doPost方法其实是可以和合二为一的,但是为了区分Psot传值和Get传值,需要分别写代码,但为方便,两个方法中写一样的代码就行。

或者用在doGet方法中写上

doPost(request, response);

2.Servlet中没有内置对象。

request和response对象在doGet和doPost方法已经创建:

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
我们还需要自己创建session对象:

HttpSession session=request.getSession();
简言之,我们在创建Servlet对象的时候,

因该基本都会先写上:

doPost(request, response);HttpSession session=request.getSession();request.setCharacterEncoding("utf-8");//如果要使用中文,必须添加这一行response.setContentType("text/html;charset=utf-8");//同时在这一行的值中添加charset=utf8

Servlet生命周期--单例模式:

在创建下一个对象的时候,不会再创建新的Servlet对象,而是用已经创建的来实现Post or Get方法。

这叫单例模式。


Servlet中session的参数:

这样的好处就是程序可以允许用户正常通过JSP访问,但是不允许直接访问Servlet。

HttpSession session=request.getSession();/*true或者无参  如果有相关对象(session),返回相关联对象, * 否则创建一个session对象 *  * false      如果有相关对象(session),返回相关联对象, * 否则返回null *  */

其实,Servlet创建每个session都是唯一的。我们可以通过

 <%=session.getId() %>
来查看我们的sessionID


其次,我们也要设置一个session会话超时登出设置,这个设置在web.xml中:

<session-config><!-- session超时登出设置 -->  <session-timeout>30</session-timeout>  </session-config>













0 0