web-浅谈jsp与servlet

layout: java
title: web–浅谈jsp与servlet
tags:

  • servlet
  • jsp
  • web
    categories:
  • 前端
    author: ‘’
    date: 2019-08-23 09:30:00

JSP和servlet

区别

  • jsp的本质就是servlet,jsp经过编译后会转化成servlet
    因为jvm只能识别java类,不能识别其他的类文件,所以就有了一系列的web容器(服务器),如tomcat,这些容器将jsp编译成jvm能够识别的java类
  • 一般来说,jsp用于页面展示,servlet用于逻辑控制
    比如说要实现一个用户登录模块,我们会把页面显示交给jsp,内部逻辑控制交给servlet
  • servlet没有内置对象,jsp有一些内置对象

联系

  • servlet是严格意义上的java类,它在MVC模型中是控制层,它与表现层完全分离
  • jsp可以是html标签,可以嵌入java代码,它是表现层,侧重于视图

做好理解

  • 不同之处
    servlet通过java代码httpServletResponse对象向客户端动态输出html内容,就是说,如果我要在servlet中向客户端输出或者展示一些东西,必须要以html标签的形式
  • 各自特点
    servlet可以很好的组织业务逻辑,但是通过以字符串的形式向客户端传送html标签使得代码维护起来比较困难。
    但是一概的在jsp里面混入大量的业务逻辑也是不可取的。
  • 如何均衡
    那么如何做到二者的优势互补?答案当然是MVC,MVC是一种软件架构,分为:
  • 模型层(Model)—业务逻辑
  • 视图层(View)—负责页面显示
  • 控制层(Controler)—负责相关交互操作

示例demo

这个小demo主要实现了html表单的用户登录操作,然后记录用户的提交信息,返回给客户端。

1. loginServlet.java

package servlet;
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 java.io.IOException;

@WebServlet(urlPatterns = "/login", name = "login")
/**
 * 这里是 servlet负责页面显示, 也可以是SERVLET负责数据处理, jsp 负责页面显示
 */
public class LoginServlet extends HttpServlet {

    public static final long serialVersionUID = 1L;
    public LoginServlet() {
        super();
    }

    // post 提交浏览器不会显示,比较安全
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 设置页面编码格式
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        String user = request.getParameter("user");

        // 这样写是没有效果的,servlet向浏览器输出内容,浏览器只能解析html,所以要用html标签向页面传送信息
        //response.getWriter().println(user);
        //response.getWriter().print("这是登录界面");

        // response.getWriter() 获得一个输出流
        String string = "<html> <head> <title>这是servlet返回的结果</title></head> <body> 欢迎 " + user + "</body> </html>";
        response.getWriter().print(string);

    }
}

2. login.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>servlet测试</title>
</head>
<body>

<form action="login" method="post">
    <table>
        <tb>
            uesr:
            <input type="text" name="user"> <br>
        </tb>

        <tb>
            passwd:
            <input type="password" name="passwd"> <br>
        </tb>
    </table>

    <button>提交</button>
</form>

</body>
</html>

测试结果

可以知道,我输入的user是“servler测试”,点击登录按钮后,返回给客户端的就是用户提交的user值,”servlet测试“。

  • 页面提交
    页面提交
  • 信息返回
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值