Java后端02(jsp)

这篇具有很好参考价值的文章主要介绍了Java后端02(jsp)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

jsp

​ servlet 是无法将后端获取的数据传递给html 页面的,无法再servlet 中通过转发或者是重定向的方式,给html 页面传递响应的后端数据,servlet 中由于拼接过于繁琐,是不适合写html 的因此引入了 jsp ,既可以编写 html标签,也可以写 Java 代码,

<dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.3</version>
</dependency>

jsp的本质是Servlet

  1. 静态资源 html css js 图片
  2. html标签
  3. <%@ %> 指令
  4. <% %> 可以在这个标签中书写Java代码
  5. <%= %> 用于输出一段内容呈现在html中
  6. <%-- --%> jsp中的注释,这个注释和html的注释不一样,这个注释相当于是生成在jsp专业的servlet中,最终的页面是看不到这个注释的
  7. <jsp:include page="xx"> 用于做页面引用和包含,类似于html 的iframe 标签

页面包含

<jsp:include page="被包含的文件名"></jsp:include>

cookie 和 session

  1. cookie 由服务器创建由浏览器保存,服务器通过响应给客户端发送 cookie(一般不会以明文形式出现)
// 通过servlet实现cookie
@WebServlet("/testCookie")
public class TestCookieServlet extends HttpServlet {
    @Override
    protected void doTrace(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 实例化一个 cookie 对象
        Cookie c = new Cookie("jerk","wyf");
        // 设置 cookie 的有效期(单位秒)
        c.setMaxAge(60*24*60);
        // 设置 cookie 的触发路径,当设置为 / 的时候,浏览器向服务器发送的所有请求都会携带这个 cookie
        c.setPath("/");
        // 将 cookie 数据添加到响应中
        resp.addCookie(c);
    }
}

// 通过servlet读取cookie
@WebServlet("/getCookie")
public class GetCookieServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 读 cookie
        Cookie[] cookies = req.getCookies();
        if(null != cookies){
            for (Cookie cookie : cookies) {
                System.out.println(cookie.getName() + " : " + cookie.getValue());
            }
        }
    }
}
  1. 由于cookie 的安全性不高,因此引入了 session

⭐session 代表着单服务器会话,从用户打开一个网页开始,无论在这个网页中访问了多少页面,点击了多少链接,都属于同一个会话,知道用户关闭浏览器为止,session 是由 tomcat 自己创建,开发者只是获取了 tomcat 创建的 session,在jsp中,session 是内置对象,并不需要定义,就可以直接使用,如果是在 servlet 中 需要使用 HttpSession session = req.getSession() 来获取,但是 jsp 并不需要 session 对象本身可以用俩存储数据,用于跨页面的信息传递

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" isELIgnored="false" %>
<html>
	<head>
    	<title>Title</title>
	</head>
    <body>
    <%
        session.setAttribute("session01","robot01");
    %>
    <a href="getSession.jsp">点击跳转到获取信息的jsp</a>
    </body>
</html>

四个作用域对象

  1. pageContext 页面对象,用于在当前页面进行传值
  2. request 请求对象,用于在一次请求中传值
  3. session 会话对象,用于在同一个会话中做数据传递
  4. application 全局对象,所有用户共享的对象
pageContext 传参:
    <%pageContext.setAttribute("direct","robot01");%>
    <%=pageContext.getAttribute("direct")%>
request 传参:
	<%request.setAttribute("student",student);%>
	<%Student student = (Student) request.getAttribute("student");%>
session 传参:
	<%session.setAttribute("robotName","robot01");%>
	<%=session.getAttribute("robotName")%>
application 传参:

九大内置对象

在jsp中不需要定义就可以直接使用的对象

  1. request 请求
  2. response 响应
  3. out 输出
  4. pageContext 代表页面作用域对象
  5. session 会话对象
  6. application 全局对象
  7. page 等价于当前 jsp 转译的 servlet类 的实例--this
  8. config 用于获取web.xml中初始化参数的,一般不用
  9. exception 用于做jsp页面的异常处理

jstl(jsp standard tag library)标准标签库

​ 允许开发人员像使用 HTML 标签一样,在 jsp 中开发 Java 功能

// 导入依赖
<dependency>
  <groupId>jstl</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>
<dependency>
  <groupId>taglibs</groupId>
  <artifactId>standard</artifactId>
  <version>1.1.2</version>
</dependency>
<c:set var="jerk" value="$('wyf')" scope="request"></c:set>
<%--      c:if 会根据 test 中的判断结果决定其中的标签和内容是否显示在页面中         --%>
<c:if test="${age>18}">
    <p>这个人成年了</p>
</c:if>
<c:if test="${!(age>18)}">
    <p>这个人没成年</p>
</c:if>

<%
    pageContext.setAttribute("zhiNan","wjp");
    pageContext.setAttribute("list",new ArrayList<>());
    pageContext.setAttribute("jerk",null);
%>
<c:if test="${empty zhiNan}">
    <p>没有直男</p>
</c:if>
<c:if test="${empty list}">
    <p>集合的size为0</p>
</c:if>

el表达式

​ 将复杂的代码进行简化,方便我门从四个不同的作用域对象中获得属性值

⭐如果在四个不同作用域对象下存了同一个属性的值,那么 EL 表达式遵循作用域越小,作用域越高的原则,类Java

<%
    request.setAttribute("jerk","zyy");
    Student s = new Student(1,"wyf",20);
    request.setAttribute("s",s);
%>
传统方式获取对象:<%=request.getAttribute("jerk")%><br>
EL表达式获取对象:${jerk}<br>
传统方式获取对象:<%=((Student)request.getAttribute("s")).getName()%><br>
EL表达式获取对象:${s.name}<br>

⭐el表达式结合c:foreach 实现集合的快速遍历

<%
    List<Student> studentList = new ArrayList<>();	
    studentList.add(new Student(1,"robot01",20));
    studentList.add(new Student(2,"robot02",20));
    studentList.add(new Student(3,"robot01",20));
    request.setAttribute("studentList",studentList);
%>
<table>
    // 会自动根据list中的个数,自动分配表格的列
    <c:forEach items="${studentList}" var="s" varStatus="st">
        <tr>
            <td>${s.id}</td>
            <td>${s.name}</td>
            <td>${s.age}</td>
        </tr>
    </c:forEach>
</table>

MVC 设计模式

  1. M 模型层:实体类 + JDBC
  2. V 视图层:jsp + html(尽可能不出现 java 代码)
  3. C 控制器层:servlet(负责接受请求,调用业务逻辑,决定跳转的页面,绝对不会出现 html 代码)

过滤器(Servlet.filter)

​ 对请求进行过滤,可以对所有请求进行中文处理,对 session 进行用户校验,如果存在多个过滤器,顺序根据过滤器首字母排序文章来源地址https://www.toymoban.com/news/detail-623553.html

public class A_EncodingFilter implements Filter {
    @Override
    // 过滤器初始化
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    // 核心过滤方法
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
		// 传参向下转型
        HttpServletRequest req = (HttpServletRequest) servletRequest;
        HttpServletResponse resp = (HttpServletResponse) servletResponse;
        // 把所有请求拦截,并设置字符集编码
        req.setCharacterEncoding("UTF-8");
        // 放行请求
        filterChain.doFilter(req,resp);
    }

    @Override
    // 过滤器销毁
    public void destroy() {

    }
}

到了这里,关于Java后端02(jsp)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于javaweb+mysql的jsp+servlet学生成绩管理系统(管理员、教师、学生)(java+jsp+servlet+javabean+mysql+tomcat)

    基于javaweb+mysql的jsp+servlet学生成绩管理系统(管理员、教师、学生)(java+jsp+servlet+javabean+mysql+tomcat) 运行环境 Java≥8、MySQL≥5.7、Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 功能说明 管理员:个人信息、课程

    2024年02月02日
    浏览(47)
  • 基于JAVA+Servlet+JSP+MYSQL的党员信息管理系统

    项目功能: ###用户角色: 超级管理员: 整个系统的信息维护,相当于学校党务负责人 测试账号admin 密码:123456 系管理员: 各院系党务办公室负责人,负责管理自己院系党员信息 测试账号zhangsan 密码:123456 实现功能:(超级管理员与系管理员权限不同) 用户个人信息管理

    2023年04月09日
    浏览(28)
  • 学会使用Java Web实现:用户登录功能(JSP+Servlet方式)

    登录页面 login.jsp ,输入用户名和密码后,跳转到登录处理程序 LoginServlet 进行业务逻辑处理,登录成功,跳转到登录成功页面 success.jsp ,否则跳转到登录失败页面 failure.jsp 。 创建 Java Enterprise 项目,添加 Web Application 功能 设置项目名与保存位置 单击【Finish】按钮 在项目结

    2024年02月11日
    浏览(55)
  • 学会使用Java Web实现:用户登录(JSP+Servlet+DB)方式

    总体上采用MVC架构。登录页面 login.jsp ,输入用户名和密码后,跳转到登录处理程序 LoginServlet 进行业务逻辑处理,调用服务层,服务层调用数据访问层(DAO),连接数据库,查询数据库,以此判断是否登录成功。登录成功,跳转到登录成功页面 success.jsp ,否则跳转到登录失

    2024年02月02日
    浏览(37)
  • 毕业设计——java web大作业,通过jsp+servlet实现宿舍管理系统

    宿舍管理系统实现的功能主要分三大类:系统用户的注册登录验证、对宿舍信息的增删改查、对学生信息的增删改查。 系统用户的登录注册验证 登录时,通过用户名和密码判断是否有此用户;注册时,不允许注册相同用户名的用户。为防止多次注册,设置邮箱验证码功能。

    2024年02月03日
    浏览(40)
  • Java后端01(初识servlet)

    添加依赖坐标(maven) ​所有请求都会固定携带一个参数(method)代表请求的方式(GET,POST,PUT,DELETE,OPTION) 一个post请求的全流程 浏览器地址栏输入地址访问 通过超链接点击发送的请求方式 form表单的默认提交方式 ajax指定get方式发送的请求 form表单指定post方式提交 aj

    2024年02月16日
    浏览(21)
  • 【JAVA】Eclipse+MYSQL数据库+JSP+基础Servlet开发JavaWeb学生信息管理系统

    目录 前言 一、搭建环境  二、功能实现、 1、   登陆界面 注册按钮 2、学生信息管理系统主界面 3、dao包  4、用户的信息展示,添加,删除,修改功能(只展示添加代码) 5、学生的信息展示,添加,删除,修改功能(只展示添加代码) 6、成绩的信息展示,添加,删除,修

    2024年02月05日
    浏览(46)
  • Java毕业设计-基于jsp+servlet的家用电器购物商城管理系统-第87期

    获取源码资料,请移步从戎源码网:从戎源码网_专业的计算机毕业设计网站 基于jsp+servlet的家用电器购物商城管理系统:前端 jsp、jquery、layui,后端 servlet、jdbc,角色分为管理员、用户;集成商品管理、销售管理、商品购买、购物车,在线付款等功能于一体的系统。 管理员

    2024年01月18日
    浏览(39)
  • BCSP-玄子Java开发之Java Web编程CH02_JSP核心内置对象

    JSP内置对象是 Web 容器创建的一组对象 out对象 request对象 response对象 session对象 application对象 …… 无需实例化,可以直接使用 为什么JSP的内置对象不需要实例化? JSP内置对象是由Web容器初始化并加载的 这些实例按照JSP规范进行了默认的初始化操作,可以直接在JSP中使用 服务

    2024年02月11日
    浏览(37)
  • java servlet 农机租赁网站系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

    一、源码特点     java servlet  农机租赁网站系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助 系统采用 serlvet+dao+bean 模式开发 ,系统具有完整的源代码和数 据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用

    2024年02月02日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包