Servlet技能_servlet技术特点_奇闻趣事网

Servlet技能_servlet技术特点

奇闻趣事 2023-05-04 17:38www.bnfh.cn奇闻趣事

Servlet技术

CS

BS

JavaWeb

  • 早期B/S

  • 后来的B/S

Http协议

  • Http请求格式

  • Http响应格式

Tomcat

轻量级Web应用服务器,开发和调式Servlet、JSP程序的首选

  • 目录结构

  • 启动和关闭

  • 配置文件

Servlet

Server Applet: Java Servlet的简称,称小服务程序或服务连接器。

  • Servlet接口

  • GenericServlet

  • HttpServlet

  • Servlet生命周期

  • GET

  • POST

ServletRequest

HttpServletRequest

ServletResponse

HttpServletResponse

中文乱码

  • 请求

  • 响应
resp.setContentType("text/html;charset=utf-8");

ServletConfig

ServletContext

// 获取工程名
String contextPath = servletContext.getContextPath();
// 获取部署工程路径信息,对应的就是当前工程中的eb目录
String realPath = servletContext.getRealPath("/");

Servlet+JDBC


  RegisterServlet
	.demo.servlet.RegisterServlet


  RegisterServlet
	/register
package .demo.servlet;

import .demo.dao.UserDao;
import .demo.model.User;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class RegisterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) thros ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) thros ServletException, IOException {
        // 获取请求对象中保存的用户和密码
        String username = req.getParameter("username");
        System.out.println("获取到的用户名为" + username);
        String passord = req.getParameter("passord");
        System.out.println("获取到的密码为" + passord);

        // 将接受到的用户名和密码信息打包成用户对象交给DAO层进行处理
        User user = ne User(username, passord);

        UserDao userDao = ne UserDao();
        int count = userDao.createUser(user);

        // 将处理结果响应到浏览器
        resp.setContentType("text/html;charset=utf-8");

        PrintWriter riter = resp.getWriter();
        if (1 == count) {
            System.out.println("注册成功。。。");
            riter.rite("

注册成功!!!

"); } else { riter.rite("

注册失败!!!

"); } riter.close(); } }
package .demo.dao;

import .demo.model.User;
import .demo.util.DbUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class UserDao {

    public int createUser(User user) {
        Connection connection = null;
        PreparedStatement ps = null;

        try {
            // 获取连接
            connection = DbUtil.getConnection();

            // 准备sql语句
            String sql = "insert into t_user values(null, ?, ?)";

            // 获取PrepareStatement类型的引用
            ps = connection.prepareStatement(sql);

            // 向占位符设置数据
            ps.setString(1, user.getUsername());
            ps.setString(2, user.getPassord());

            // 执行sql语句
            int ro = ps.executeUpdate();

            return ro;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                DbUtil.closeConnection(connection, ps);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return 0;
    }
}
package .demo.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DbUtil {
    private static String jdbcName;
    private static String dbUrl;
    private static String dbUsername;
    private static String dbPassord;

    static {
        jdbcName = ".mysql.jdbc.Driver";
        dbUrl = "jdbc:mysql://192.168.30.222:3306/mybatis_demo";
        dbUsername = "root";
        dbPassord = "root";

        try {
            Class.forName(jdbcName);
        } catch (ClassNotFoundException e) {
            thro ne RuntimeException(e);
        }
    }

    /
      获取连接
      @return
      @thros SQLException
     /
    public static Connection getConnection() thros SQLException {
        Connection conn = DriverManager.getConnection(dbUrl,dbUsername, dbPassord);

        return conn;
    }

    /
      关闭连接
      @param conn
      @thros SQLException
     /
    public static void closeConnection(Connection conn, PreparedStatement ps) thros SQLException {
        if (null != conn) {
            conn.close();
        }

        if (null != ps) {
            ps.close();
        }
    }
}

重定向浏览器的跳转

  • 重定向原理

  • 重定向特点


        RedirectServlet
        .demo.servlet.RedirectServlet
    
    
        RedirectServlet
        /redirectTo
    
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) thros ServletException, IOException {
  System.out.println("接受到了浏览器的请求。。。");
  resp.sendRedirect("target.html");
}



    
    重定向后的页面


  

服务器重新指定位置后的页面

转发: 服务器的跳转

  • 转发原理

  • 转发特点


  ForardServlet
	.demo.servlet.ForardServlet


  ForardServlet
	/forard



  TargetServlet
	.demo.servlet.TargetServlet


  TargetServlet
	/target



    
    转发测试


  

package .demo.servlet;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class ForardServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) thros ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) thros ServletException, IOException {
        System.out.println("接受到了浏览器的请求");

        // 向request对象中设置属性信息
        req.setAttribute("forard", "forard");

        // 转发 让eb组件将任务转交给一个eb组件
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("/target");
        requestDispatcher.forard(req, resp);
    }
}
package .demo.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class TargetServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) thros ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) thros ServletException, IOException {
        System.out.println("转发过来了。。。");

        // 获取request对象中的属性值判断是否共享
        Object forard = req.getAttribute("forard");
        System.out.println("forard = " + forard);

        // 通过打印流向页面写入转发成功的信息
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().rite("

转发成功!

"); } }

线程安全

状态管理

Cookie

Session

Copyright © 2016-2025 www.bnfh.cn 怪异网 版权所有 Power by