欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSP的Session对象和Application对象

程序员文章站 2022-03-25 16:42:02
...

Session对象

简介

  • session就是会话,JSP利用servlet提供的Session接口来识别一个用户,跟踪用户的操作状态,存储这个用户的所有访问信息。
  • 生命周期:从用户访问站点时,系统就会实例化一个Session对象,直到该用户退出网站,该Session对象才会随之消失。

使用Session传递数据

  • 使用setAttribute和getAttribute方法
  • 代码示例
//JSP中的写法
session.getAttribute("user");
//servlet类中的写法
request.getSession().setAttribute("user", user);

Application对象

简介

  • application对象用于保存本网站的公用数据,服务于整个服务端。
  • 生命周期:服务器启动后,会自动创建application对象,只要没有关闭服务器,它就会一直存在,所有用户共享此对象。

使用 Application传递数据

  • 使用setAttribute和getAttribute方法
  • 代码示例
			//servlet中的写法,JSP中可直接调用application
            int number =0;
			ServletContext application = this.getServletContext();
			if(application.getAttribute("userNumber")!=null){
				number=(Integer)application.getAttribute("userNumber");	
			}
			number++;
			application.setAttribute("userNumber", number);
			

Servlet类

简介

  • Servlet(Server Applet),是在服务器上运行的小程序,它的本质上是一个Java类。
  • Servlet可以处理逻辑,它也可以用来展示页面。但我们一般用它来进行逻辑处理,使用JSP来展示数据
  • JSP本质上也是一个Servle。

代码示例

package com.sikiedu.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sikiedu.util.DBUtil;

/**
 * Servlet implementation class RegisterServlet
 */
@WebServlet("/register_do") //注解
public class RegisterServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegisterServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
//	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//		// TODO Auto-generated method stub
//		response.getWriter().append("Served at: ").append(request.getContextPath());
//	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//得到客户端的数据
		String username =request.getParameter("username");
		String password =request.getParameter("password");
		int age =Integer.parseInt(request.getParameter("age"));
		//使用getBytes解码,再通过new String编码为utf-8格式
		String sex = new String(request.getParameter("sex").getBytes("iso-8859-1"),"utf-8");

		boolean isSuccess = DBUtil.addUser(username,password,age,sex);
		// if(isSuccess){
//		  	out.println("<font color ='green'>注册成功</font>");
		// }else{
//		  	out.println("<font color ='red'>注册失败</font>");
		// }
		//请求转发
		if(isSuccess){
			//返回login.jsp给客户端,请求转发
			request.setAttribute("message","注册成功,请登录!");
			//重定向
			response.sendRedirect("login.jsp");
//			//请求转发
//			request.getRequestDispatcher("login.jsp").forward(request,response);	
		}else{
			request.setAttribute("message","注册失败,用户名重复!");
			request.getRequestDispatcher("register.jsp").forward(request,response);
		}
	}

}

  • 在doGet 和doPost方法中写入逻辑处理代码,根据Get和Post方式选择。

路径声明

  • 注解方式
@WebServlet("/register_do") //注解
  • xml中声明
<servlet>
		<servlet-name>LoginServlet</servlet-name>
		<servlet-class>com.sikiedu.servlet.LoginServlet</servlet-class>
	</servlet>
   <servlet-mapping>
   		<servlet-name>LoginServlet</servlet-name>
   		<url-pattern>/login_do</url-pattern>
   </servlet-mapping>
相关标签: Javaweb学习