编程语言
首页 > 编程语言> > JavaWeb核心篇(3)——JSP,MVC,三层架构

JavaWeb核心篇(3)——JSP,MVC,三层架构

作者:互联网

JavaWeb核心篇(3)——JSP,MVC,三层架构

在本篇文章中我们会学习到JSP,MVC,三层架构

虽然JSP已经快被时代所淘汰,但是在一些老旧的工作场所还是有在使用,所以了解一下也不为过

至于MVC和三层架构,应该是属于核心思想部分

JSP

首先我们先来简单介绍一下JSP:

我们先来了解一下未开发JSP之前,Servlet是如何输出HTML标签的:

// Servlet通过writer的write方法进行一行一行的输出:
// 例如:
Writer.write("<html>");
Writer.write("<body>");
Writer.write("username");
Writer.write("</body>");
Writer.write("</html>");

所以在古老版本,JSP的开发实际上很大程度的遍历了编程

JSP快速入门

JSP需要导入jar包才可以使用,这里我们采用Maven来进行操作:

  1. 导入JSP坐标(注意:使用范围为provided)
            <dependency>
        		<groupId>javax.servlet.jsp</groupId>
        		<artifactId>jsp-api</artifactId>
        		<version>2.2</version>
       			<scope>provided</scope>
    		</dependency>
  1. 创建JSP文件
  2. 编写HTML和Java代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

    <h1>hello jsp</h1>

    <%
        System.out.println("hello,jsp~");
        int i = 3;
    %>


    <%="hello"%>
    <%=i%>

    <%!
        void  show(){}
        String name = "zhangsan";
    %>


</body>
</html>

JSP原理

在介绍JSP的脚本语法之前,我们先了解一下JSP的原理:

JSP脚本

JSP中可以直接书写HTML代码,因为JSP会自动将文本带入到out的write方法中去

但是Java的内容不能直接输出,需要采用脚本方法

JSP的脚本主要分为三种:

  1. <% ... %>:
<%
System.out.println("hello,jsp~");
%>
  1. <%= ... %>:
<=%
"Hello JSP"
%>
  1. <%! ... %>:
<!%
String name;
void method(){};
%>

注意:在<%%> 中不可以输入HTML,如果想使用for或if等方法需要在{}之间插入%><%来结束脚本内容来书写HTML标签

代码示例:

<%@ page import="com.itheima.pojo.Brand" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%
    // 查询数据库
    List<Brand> brands = new ArrayList<Brand>();
    brands.add(new Brand(1,"三只松鼠","三只松鼠",100,"三只松鼠,好吃不上火",1));
    brands.add(new Brand(2,"优衣库","优衣库",200,"优衣库,服适人生",0));
    brands.add(new Brand(3,"小米","小米科技有限公司",1000,"为发烧而生",1));

%>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="button" value="新增"><br>
<hr>
<table border="1" cellspacing="0" width="800">
    <tr>
        <th>序号</th>
        <th>品牌名称</th>
        <th>企业名称</th>
        <th>排序</th>
        <th>品牌介绍</th>
        <th>状态</th>
        <th>操作</th>

    </tr>



    <%
        for (int i = 0; i < brands.size(); i++) {
            Brand brand = brands.get(i);
    %>

    <tr align="center">
        <td><%=brand.getId()%></td>
        <td><%=brand.getBrandName()%></td>
        <td><%=brand.getCompanyName()%></td>
        <td><%=brand.getOrdered()%></td>
        <td><%=brand.getDescription()%></td>

        <%
            if(brand.getStatus() == 1){
                //显示启用
        %>
            <td><%="启用"%></td>
        <%
            }else {
                // 显示禁用
        %>
            <td><%="禁用"%></td>
        <%
            }
        %>

        <td><a href="#">修改</a> <a href="#">删除</a></td>
    </tr>

    <%
        }
    %>



</table>

</body>
</html>

JSP缺点

我们之前说到JSP已经被时代所淘汰,所以我们现在来谈论一下JSP的缺点:

最开始由Servlet单独运作,到后来由JSP单独运作,再后来由Servlet和JSP合作运行:

到了如今已经基本完全被HTML和Ajax替代

EL表达式

EL表达式是一种表达式语言,用于简化JSP页面的Java代码:

${brands}:表示获得域(request)中存储的key为brands的数据

然后我们来介绍一下JavaWeb中的四大域对象:

EL表达式获得数据,会依次从这四个域中寻找,直到找到为止

域值范围: page < request < session < application

JSTL标签

我们使用JSTL标签需要先导入jar包,这里我们同样使用Maven导入:

  1. 导入坐标
	<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.1.2</version>
	</dependency>
	<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
	</dependency>
  1. 在JSP页面上导入JSTL标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  1. 使用即可
<c:if>
</c:if>

因为JSTL并不常用,我们在这里只介绍简单的if和for循环:

  1. if语句
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
    <title>Title</title>
</head>
<body>

    <%--
        c:if:来完成逻辑判断,替换java  if else
    --%>
<%--

    <c:if test="true">
        <h1> true </h1>
    </c:if>

    <c:if test="false">
        <h1> false </h1>
    </c:if>
--%>
    <c:if test="${status ==1}">
        启用
    </c:if>

    <c:if test="${status ==0}">
        禁用
    </c:if>

</body>
</html>
  1. for语句
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="button" value="新增"><br>
<hr>
<table border="1" cellspacing="0" width="800">
    <tr>
        <th>序号</th>
        <th>品牌名称</th>
        <th>企业名称</th>
        <th>排序</th>
        <th>品牌介绍</th>
        <th>状态</th>
        <th>操作</th>

    </tr>


    <!-- 
	c:forEach -> for(int i : nums) 
	items -> nums
	var -> i
	varStatus -> 状态码;
	varStatus有两个属性,
	status.index 属性:当前迭代的元素在集合中的索引,从 0 开始。
	status.count 属性:当前迭代的元素是集合中第几个元素,从 1 开始。
	--> 
    <c:forEach items="${brands}" var="brand" varStatus="status">
        <tr align="center">
            <%--<td>${brand.id}</td>--%>
            <td>${status.count}</td>
            <td>${brand.brandName}</td>
            <td>${brand.companyName}</td>
            <td>${brand.ordered}</td>
            <td>${brand.description}</td>
            <c:if test="${brand.status == 1}">
                <td>启用</td>
            </c:if>
            <c:if test="${brand.status != 1}">
                <td>禁用</td>
            </c:if>

            <td><a href="#">修改</a> <a href="#">删除</a></td>
        </tr>

    </c:forEach>




</table>


<hr>

<!--
c:forEach -> 对标普通循环
begin:开始数
end:结束数
var:当前数
step:步长(begin = begin + step)
-->
    
    
<c:forEach begin="1" end="10" step="1" var="i">
    <a href="#">${i}</a>
</c:forEach>


</body>
</html>

MVC模式

首先我们先来了解一下MVC:

MVC优点:

三层架构

我们对上面三层进行简单的解释:

结束语

好的,关于JSP和MVC三层架构我们就到这里

附录

该文章属于学习内容,具体参考B站黑马程序员陈老师的JavaWeb课程

这里附上链接:01-JSP概述&快速入门&原理_哔哩哔哩_bilibili

标签:Java,JavaWeb,MVC,write,HTML,JSP,Servlet
来源: https://www.cnblogs.com/qiuluoyuweiliang/p/16676367.html