JSP技术解析

JSP 的介绍:
JSP全称是Java Server Pages
它和Servlet技术一样都是sun公司定义的一种
用于开发动态web的资源的技术 JSP实际上就是Servlet.

jsp = html + java (主要以实现Servlet内置功能来与Servlet相连接)

完整的网站不同技术的分工
html : 呈现静态内容

servlet: 适合编写java逻辑代码 不合适 写页面的部分原因是重复代码过多造成代码冗余大.浪费资源

JSP: 适合编写输出 动态内容 ,但不适合编写java逻辑. 提示功能较弱.不适合大篇幅的逻辑代码.

JSP 原理 (编译执行过程)
访问JSP页面时 JSP 页面会被翻译成 .java文件

然后.Java会被编译.class文件(字节码文件)
写一个获取当前时间的 JSP

<%@page import = "java.util.Date"%>
<%@page improt = "java.xml.crypto.Data"%>
<%@page improt = "java" contentType = "text/html; charset =UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv = "Content" content = "text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
            <%
            //正常写java代码
            Date date = new Date();
            out.write(date.toLocaleString());
            %>
</body>
</html>

JSP的最佳写法
用纯 JSP 试写 登陆 处理登陆逻辑 登陆成功(欢迎页面)

用form表单实现登陆页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding = UTF-8%>  设置可以使用的语言.现在JSP只能用Java 所以说page language="java"可以忽略不写, ontentType="text/html; charset=UTF-8" pageEncoding = UTF-8% 设置服务器 以及浏览器的编码格式.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>  
            <%
            //显示数据
            String msg = (String)request.getAttribute("msg");
            //判断数据是否为空
            if(msg == null){
                out.print(msg);
            }
            %>
            <form action ="SH-web-JSP/dologin.jsp">//工程路径 写登陆逻辑的文件名
            账号<input type="text" name="username">
            密码<input type="text" name="password">
                <input type ="submit" value="登陆">
            </form>

登陆的逻辑判断

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

                    <% 
                    //   获取参数
                    String username= request.getParameter("username");
                    String password= request.getParameter("password");
                    //   处理逻辑
                    if(username.equals("wanglong")&&password.equals("123")){
                        //跳转页面  ----欢迎页面  并且  显示 名字
                        //传值的时候 如果非表单提交的数据 可以保存在域对象中
                        //  如果是表单提交过来的数据  直接使用请求转发 就行了
                        //request.getRequestDispatcher("/success.jsp").forward(request, response);

                        request.setAttribute("username", username);
                        response.sendRedirect(request.getContextPath()+"success.jsp/success");


                    }else{
                            //  登陆失败  返回登陆页面

                            //  相对于 服务器内 不添加工程名  例如请求转发

                            //  相对于 服务器外(相对网址的8080后) 需要添加工程名   例如请求重定向

                            //  向失败后 在页面中  显示 错误信息   

                            // 使用请求转发  比较合适 
                            request.setAttribute("msg", "登陆失败");
                            request.getRequestDispatcher("/login.jsp").forward(request, response);

                        /* response.sendRedirect(request.getContextPath() + "/login.jsp"); */

                    }
                    //   请求分发(跳转页面)
                    //最佳写法  servlet  只写 获取参数   处理逻辑  请求分发.




                    %>

跳转的页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>  
            <h1>欢迎来到本网站</h1>
            <%
            String  username    = (String)session.getAttribute("username"); 
            out.print("username");

            %>

</body>
</html>
小脚本 <% java代码 %>
表达式 <%= 2+3 %>
声明   <%! %> 表示在类中定义全局成员,和静态块。

JSP注释
JSP注释:<%-- 被注释的内容 --%> 特点:安全
网页注释:<!-- 网页注释 -->    特点:不安全

jsp的3个指令
page
import 和java代码中的import是一样的
<%@ page import="java.util.Date,java.util.List"%>
或者:
<%@ page import="java.util.Date"%>
<%@ page import="java.util.List"%>
JSP会自动导入以下的包:
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;

session 默认值是true
errorPage: 如果页面中有错误,则跳转到指定的资源。
isErrorPage: 是否创建throwable对象。默认是false;
contextType: 等同于response.setContextType("text/html;charset=utf-8");

Include
静态包含:把其它资源包含到当前页面中。
<%@ include file="/4.jsp" %>
动态包含:
<jsp:include page="/4.jsp"></jsp:include>

两者的区别:翻译的时间段不同
静态:在翻译时就把两个文件合并
动态:不会合并文件,当代码执行到include时,才包含另一个文件的内容。
原则:能用静的就不用动的。


taglib
作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。
需要导入 jar 包
jstl.jar standard.jar
https://mvnrepository.com/
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

jsp的6个动作
<jsp:include > 动态包含
<jsp:forward> 请求转发
<jsp:param> 设置请求参数

<jsp:useBean> 创建一个对象
<jsp:setProperty> 给指定的对象属性赋值
<jsp:getProperty> 取出指定对象的属性值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值