[java web] Servlet basic knowledge

Servlet

Small program running on the server side

life cycle methods

package daqi;
import javax.servlet.*;
import java.io.IOException;

public class servlet implements Servlet {
    
    
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    
    

    }

    @Override
    public ServletConfig getServletConfig() {
    
    
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    
    
        System.out.println("hello servlet");
    }

    @Override
    public String getServletInfo() {
    
    
        return null;
    }

    @Override
    public void destroy() {
    
    

    }
}

Configuration

xml configuration

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>demo1</servlet-name>
        <servlet-class>daqi.servlet</servlet-class>


        <!-- 访问时创建:负数
            启动服务器时创建:0或正整数
            -->
        <load-on-startup>0</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>demo1</servlet-name>
        <url-pattern>/demo1</url-pattern>
    </servlet-mapping>


</web-app>

Annotation configuration

@WebServlet(urlPatterns = "/demo")
public class servlet implements Servlet {
    
    
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    
    

    }
// 或者直接@WebServlet("/demo")

request

Request data method

String method = request.getMethod();
System.out.println(method);

String contextPath = request.getContextPath();
System.out.println(contextPath); // 获取虚拟目录

String servletPath = request.getServletPath();
System.out.println(servletPath);

String queryString = request.getQueryString();
System.out.println(queryString);

String requestURI = request.getRequestURI();
System.out.println(requestURI); // 获取URI(标识符),范围比URL大

StringBuffer requestURL = request.getRequestURL();
System.out.println(requestURL); // 获取URL(定位符)

String protocol = request.getProtocol();
System.out.println(protocol);

String remoteAddr = request.getRemoteAddr();
System.out.println(remoteAddr);

Case: User login

public class JDBCUtils {
    
    

    private static DataSource ds;


    static{
    
    

        try {
    
    
            // 加载配置文件
            Properties pro = new Properties();
            // 使用ClassLoader加载配置文件,获取字节输入流
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);

            // 初始化连接处对象
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
    
    
            e.printStackTrace();

        } catch (Exception e) {
    
    
            e.printStackTrace();

        }
    }

    // 获取连接池对象
    public static DataSource getDataSource(){
    
    
        return ds;
    }



    // 获取连接Connection对象
    public static Connection getConnection() throws SQLException {
    
    
        return ds.getConnection();
    }
}
//操作数据库
public class UserDao {
    
    

    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    public User login(User loginUser){
    
    
        String sql = "select * from user where username = ? and password = ?";
        try {
    
    
            User user = template.queryForObject(sql,
                    new BeanPropertyRowMapper<User>(User.class),
                    loginUser.getUsername(), loginUser.getPassword());
            return user;
        } catch (EmptyResultDataAccessException e) {
    
    
            return null;
        }
    }
}
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    
    

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        // 设置编码
        req.setCharacterEncoding("utf-8");
        // 获取请求参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        // 封装user对象
        User loginUser = new User();
        loginUser.setUsername(username);
        loginUser.setPassword(password);

        // 调用UserDao的login方法
        UserDao dao = new UserDao();
        User user = dao.login(loginUser);

        // 判断user
        if(user == null) {
    
    
            // 登录失败
            req.getRequestDispatcher("/failServlet").forward(req,resp);

        } else {
    
    
            // 登录成功
            // 存储数据
            req.setAttribute("user", user);
            // 转发数据
            req.getRequestDispatcher("/successServlet").forward(req,resp);
        }


    }

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

BeanUtils tool class

Simplify packaging operations

// 获取所有数据请求
Map<String, String[]> map = req.getParameterMap();
// 创建User对象
User loginUser = new User();
// 用BeanUtils进行封装
try {
    
    
    BeanUtils.populate(loginUser,map);
} catch (IllegalAccessException e) {
    
    
    e.printStackTrace();
} catch (InvocationTargetException e) {
    
    
    e.printStackTrace();
}

method

Attributes are methods to go to the university, such as getUsername -> username

BeanUtils.populate(loginUser,map);

// 设置的是属性,不是变量,大部分时候相同
BeanUtils.setProperty(user,"hehe", "male");
String gender = BeanUtils.getProperty(user,"hehe");

Guess you like

Origin blog.csdn.net/weixin_62726289/article/details/122710502