Servlet技术

CS

BS

JavaWeb

Http协议

Tomcat

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

Servlet

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

ServletRequest

HttpServletRequest

ServletResponse

HttpServletResponse

中文乱码

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

ServletConfig

ServletContext

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

Servlet+JDBC


  RegisterServlet
	com.demo.servlet.RegisterServlet


  RegisterServlet
	/register
package com.demo.servlet;

import com.demo.dao.UserDao;
import com.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) throws ServletException, IOException {
        this.doPost(req, resp);
    }

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

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

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

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

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

注册成功!!!

"); } else { writer.write("

注册失败!!!

"); } writer.close(); } }
package com.demo.dao;

import com.demo.model.User;
import com.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.getPassword());

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

            return row;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                DbUtil.closeConnection(connection, ps);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return 0;
    }
}
package com.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 dbPassword;

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

        try {
            Class.forName(jdbcName);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

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

        return conn;
    }

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

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

重定向:浏览器的跳转


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



    
    重定向后的页面


  

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

转发: 服务器的跳转


  ForwardServlet
	com.demo.servlet.ForwardServlet


  ForwardServlet
	/forward



  TargetServlet
	com.demo.servlet.TargetServlet


  TargetServlet
	/target



    
    转发测试


  

package com.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 ForwardServlet extends HttpServlet {

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

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

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

        // 转发 让web组件将任务转交给另外一个web组件
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("/target");
        requestDispatcher.forward(req, resp);
    }
}
package com.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) throws ServletException, IOException {
        doPost(req, resp);
    }

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

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

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

转发成功!

"); } }

线程安全

状态管理

Cookie

Session

展开阅读全文

页面更新:2024-05-20

标签:语句   组件   属性   浏览器   原理   页面   服务器   用户   工程   技术   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top