zoukankan      html  css  js  c++  java
  • JavaWeb学习

    ---恢复内容开始---

    Reponse(需要掌握)

    重定向:将这个请求,转换到另一个地址

    //通过响应对象重定向页面
    resp.sendRedirect("404.jsp");

    ServletContext

    • web容器在启动时,他会为每个web应用程序都创建一个对应的ServletContext对象,他代表当前web应用。
    • 多个Servlet通过ServletContext对象实现数据共享
    • 获取web应用的初始化参数
    • 用ServletContexthi实现请求转发
    • 利用ServletContext对象读取资源文件

    例一,通过ServletContext对象读取网站配置文件

    1,新建一个database.properties文件

    driver=com.mysql.jdbc.Driver
    username=root
    password=123456
    url=jdbc:mysql://localhost:3306/smbms

    2,编写servlet类

    package com.kuang.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.Properties;
    
    //读取properties配置文件
    public class ServletDemo03 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 {
            //读取配置文件
    
            //1.获得配置文件的路径
            String realPath = this.getServletContext().getRealPath("/WEB-INF/classes/resources/database.properties");
            System.out.println("取得的路径为:"+realPath);
    
            Properties properties = new Properties();
            FileInputStream is = new FileInputStream(realPath);
    
            properties.load(is);//把文件流加载到配置文件的对象中;
    
            String driver = properties.getProperty("driver");
            String username = properties.getProperty("username");
            String password = properties.getProperty("password");
            String url = properties.getProperty("url");
    
            //响应到网页
            resp.getWriter().println(driver);
            resp.getWriter().println(username);
            resp.getWriter().println(password);
            resp.getWriter().println(url);
    
            //=======================================
            System.out.println(driver);
            System.out.println(username);
            System.out.println(password);
            System.out.println(url);
        }
    }

    3,配置web.xml

    <servlet>
        <servlet-name>Demo03</servlet-name>
        <servlet-class>com.kuang.servlet.ServletDemo03</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>Demo03</servlet-name>
        <url-pattern>/q3</url-pattern>
    </servlet-mapping>

    4,网页打开

    locallhost:8080/demo02/q3

    5,网页显示

    Request(需要掌握)

    JSP取得项目的路径

    ${pageContext.request.contextPath}

    Request对象

    package com.kuang.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 RequestDemo01 extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            //查看request对象的方式
            System.out.println(request.getContextPath()); //获得web项目路径
            System.out.println(request.getRequestURI()); //请求的URL路径
            //Remote 远程
            System.out.println(request.getRemoteUser()); //获得远程的用户名
            System.out.println(request.getRequestedSessionId()); //获得SessionId;
            System.out.println(request.getServletPath()); //请求servlet的url
            System.out.println(request.getLocalAddr()); //获得本地地址  防火墙
            System.out.println(request.getLocalName()); //获得本地名字
            System.out.println(request.getLocalPort()); //获得访问的端口号
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request,response);
        }
    }

    IDEA运行结果

    Request对象接受前端用户提交的参数

    1,写前端注册页面

    • 表单的提交方式get/post
    • 表单提交的位置action:服务器的路径/servlet对应的请求url
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>注册</title>
    </head>
    <body>
    
    <%--
    JSP的注释
    --%>
    
    <%--
    Form表单
        action:代表要提交的路径,表单要提交到哪里 ,可以提交到一个Servlet
            //提交到Servlet需要,获取到Web项目的路径下的Servlet
        method: 提交表单的方式
    --%>
    <h1>注册</h1>
    
    <form action="${pageContext.request.contextPath}/r2" method="post">
    
        <p>用户名:<input type="text" name="username"></p>
        <p>密码:<input type="password" name="password"></p>
    
        <p>
            <input type="submit">
            <input type="reset">
        </p>
    
    </form>
    
    </body>
    </html>

    2,写处理前端提交信息的Servlet

    • 接收前端传递的控件信息,request.getParameter(“控件的name”)
     1 package com.kuang.servlet;
     2 import javax.print.attribute.HashPrintRequestAttributeSet;
     3 import javax.servlet.ServletException;
     4 import javax.servlet.http.HttpServlet;
     5 import javax.servlet.http.HttpServletRequest;
     6 import javax.servlet.http.HttpServletResponse;
     7 import java.io.IOException;
     8 
     9 //处理前端提交过来的数据
    10 public class RequestDemo02 extends HttpServlet {
    11     @Override
    12     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    13         doPost(req,resp);
    14     }
    15     @Override
    16     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    17 
    18         //通过HttpServletRequest获取前端用户提交的信息
    19         //req.getParameterValues(); 获得前端传递的控件信息,通过控件的name;但是可以接受多个参数的控件,比如(多选框....)
    20         //req.getParameter(); 获得前端传递的控件信息,通过控件的name;
    21 
    22         req.setCharacterEncoding("utf-8");
    23         resp.setCharacterEncoding("utf-8");
    24 
    25         String username = req.getParameter("username");
    26         String password = req.getParameter("password");
    27 
    28         //连接数据库,比较数据库中的信息是否匹配
    29 
    30         if (username.equals("admin")&&password.equals("1234567")){
    31             System.out.println("登录成功!"); //跳转到成功页面
    32         }else {
    33             System.out.println("登录失败!"); //提示重新注册
    34         }
    35 
    36         System.out.println(username);
    37         System.out.println(password);
    38     }
    39 }

    3,配置web.xml

       配置对应的XML文件

     <servlet>
            <servlet-name>RequsetDemo02</servlet-name>
            <servlet-class>com.kuang.servlet.RequestDemo02</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>RequsetDemo02</servlet-name>
            <url-pattern>/r2</url-pattern>
        </servlet-mapping>

    ---恢复内容结束---

  • 相关阅读:
    hdu 2842 Chinese Rings
    Codeforces Round #118 (Div. 1) A 矩阵快速幂
    hdu2604 Queuing
    支付宝 生活号 获取 userId 和 生活号支付
    maven 项目使用本地jar
    nexus 私有 maven 仓库的搭建
    linux jdk 安装
    gitlab 可以上传代码,但是 不能 上传 tag 问题
    maven 内置变量
    mysql 不允许分组的问题 this is incompatible with sql_mode=only_full_group_by
  • 原文地址:https://www.cnblogs.com/like-lry/p/11198219.html
Copyright © 2011-2022 走看看