jsp技术(一)—— jsp简介与原理

jsp技术(一)

jsp简介

JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP实际上就是Servlet
jsp= html+java

html:静态内容
servlet:服务器端的小应用程序。适合编写java逻辑代码,如果编写网页内容则工作量相当巨大
jsp:适合编写输出动态内容,但不适合编写java逻辑。

jsp的原理

jsp技术(一)—— jsp简介与原理_第1张图片

(1)当客户第一次请求JSP页面时,JSP引擎会通过预处理把JSP文件中的静态数据(HTML文本)和动态数据(Java脚本)全部转换为Java代码。这个转换工作实际上是非常直观的,对于HTML文本只是简单的用out.println()方法包裹起来,对于Java脚本只是保留或做简单的处理。

(2)JSP引擎把生成的.java文件编译成Servlet类文件(.class)。对于Tomcat服务器而言,生成的类文件默认的情况下存放在\work目录。

(3)编译后的class对象被加载到容器中,并根据用户的请求生成HTML格式的响应页面。

在执行JSP网页时,通常可分为两个时期:转译时期(Translation Time)和请求时期(Request Time)。在转译时期,JSP网页被转译成Servlet类,然后被编译成类文件;在请求时期,Servlet类执行后,响应结果至客户端。

一个jsp的小案例

案例说明:本案例通过使用jsp的技术和servlet技术实现一个简单的网页登陆模型。主要是由三个页面构成,一个login页面,一个dologin页面,一个success页面。首先我们均采用jsp的形式实现。

login页面实现的代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
    <form action="/day01_00_jsplogin/doLogin.jsp" method="post">
            用户名:<input type="text" name="userName"/><br/>
            密码:<input type="password" name="pwd"/><br/>
            <input type="submit" value="登录"/><br/>
    form>
body>
html>

login.jsp页面当中我只做了一个简单的登陆表单,然后转发到dologin.jsp进行处理。

下面是dologin.jsp页面代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

    <%
      //获取表单数据额
      String userName = request.getParameter("userName");
      String pwd = request.getParameter("pwd");

      //处理业务逻辑
      if("tom".equals(userName)&&"123".equals(pwd)){
            request.getRequestDispatcher("/success.jsp").forward(request, response);
      }else{
            response.sendRedirect("/day01_00_jsplogin/dologin.jsp");
      }

      //分发转向
     %>

dologin做完判断之后进行分发转向到success页面,下面是sucess.jsp页面的代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
    欢迎你:<%
        String userName = request.getParameter("name");
        out.print(userName);
     %>

     <a href="/day01_00_jsplogin/login.jsp">跳到主页a>
body>
html>

由此我们实现了一个简单的login登陆页面,部署到tomcat之后测试页面如下:

jsp技术(一)—— jsp简介与原理_第2张图片

这里写图片描述

最后我们可以改造一下使用servlet进行控制,将dologin操作写成servlet代码如下:

package com.itheima.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.SingleThreadModel;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DoLoginServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //获取表单数据
        String userName = request.getParameter("userName");
        String pwd = request.getParameter("pwd");
        //处理业务逻辑
        if("tom".equals(userName)&&"123".equals(pwd)){
            request.getSession().setAttribute("name", userName);
            request.getRequestDispatcher("/success.jsp").forward(request, response);
            //response.sendRedirect(request.getContextPath()+"/success.jsp");
        }else{
            //response.sendRedirect(request.getContextPath()+"/login.jsp");
            request.setAttribute("msg", "用户名或密码不正确!");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }

        //分发转向
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

}

经过测试可以得到和如上情况一样的结果。

你可能感兴趣的:(java_web开发)