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

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=utf8
		PrintWriter 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值