【Java Web】 第二章

一.前台发送请求的三种方式

<p>前台发送请求的方式1:通过超链接</p>
    <a href="http://www.baidu.com">指向互联网资源</a>
    <a href="index.html">指向项目内部的页面资源</a>
    <a href="/xxx">指向项目内部的Java资源</a>

    <hr>
    <p>前台发送请求的方式2:通过JS</p>
    <button id="btn">点击按钮发送一个请求</button>

    <hr>
    <p>前台发送请求的方式3:通过表单</p>
    <form action="index.html" method="post">
        账号:<input type="text" name="username"><br>
        <input type="submit" value="提交">
    </form>


    <script>
        document.getElementById("btn").onclick = function (){
            location.href = "index.html";//本质依然是超链接
        }
    </script>

 

    后台如何接受前台发出的请求---Servlet创建方式
       前台如何发送带有数据的请求
       后台如何接受前台的数据
       实现用户注册基础版
       实现用户注册进阶版

        <p>web项目是存在缓存问题的:好处就是节省流量节省加载时间。</p>
        <p>web项目是存在缓存问题的:坏处就是无法得到理想的正确的结果。</p>
        <p>Web缓存存在的两个地方 : 1.浏览器内部--更多工具--清除浏览数据</p>
        <p>Web缓存存在的两个地方 : 2.idea项目内部的out目录(加载web项目的缓存目录)</p>

二.后台如何获取前台发来的请求

        <p>答:通过tomcat提供的Servlet类来实现</p>
        <p>什么是Servlet:处理前台请求的一个类</p>

三.如何去创建Servlet

       <p>1.导入jar包---servet-api.jar  在tomcat的lib目录里面</p>
        <p>2.在servlet的包下创建一个Servlet的类</p>
        <p>2.1 Servlet的命名规范: XxxServlet  其中Xxx表示什么功能的Servlet </p>
        <p>3.继承HttpServlet</p>
        <p>4.重写父类的service方法,然后把默认的super删除</p>
        <p>5.在类上添加@WebServlet("/Xxx") 注解。表示前台通过什么请求路径访问该类,一般和类名同名</p>

        <p>测试如下Servlet</p>
        <a href="/TestServlet">通过超链接访问Servlet</a>
        <button id="btn">通过JS访问Servlet</button>

    <script>
        document.getElementById("btn").onclick = function (){
            location.href = "/TestServlet";
        }
    </script>

四.如何让一个普通的Java类变成可以处理前台请求的servlet类

    1.导入jar包 servlet-api.jar  导入了jar包才可以使用Servlet的相关功能

    2.在类上加上@WebServlet("/xxx")   注意/表示绝对路径 Xxx表示请求的路径名
    表示该类是可以和前台进行交互了

    3.继承HttpServlet类  让子类拥有父类的相关方法。

    4.重写父类的service方法。(处理请求的相关代码)

//接受数据的流程:
        //1.设置编码
        req.setCharacterEncoding("utf-8");

        //收集单独独立的数据,例如账号密码性别年龄生日自我介绍等等
        //xxx表示前台的参数名是什么  接受返回值全是String  需要自行转换
//        String xxx = req.getParameter("xxx");

        //收集多个数据:例如爱好  需要遍历 来一一取值
//        String[] xxx = req.getParameterValues("xxx");

        String username = req.getParameter("username");
        System.out.println("账号为" + username);
        String password = req.getParameter("password");
        System.out.println("密码为" + password);

        String sex = req.getParameter("sex");
        System.out.println("sex为" + sex);
        String[] likes = req.getParameterValues("likes");
        String l = "";
        for (int i = 0;i<likes.length;i++){
            if(i==likes.length-1){
                l = l + likes[i] ;
            }else{
                l = l + likes[i] + ",";
            }
        }

        String birthday = req.getParameter("birthday");
        System.out.println("birthday为" + birthday);

        String address = req.getParameter("address");
        System.out.println("address为" + address);
        String jieshao = req.getParameter("jieshao");
        System.out.println("jieshao为" + jieshao);

        UserInfoDao ud = new UserInfoDao();
        Userinfo userinfo = new Userinfo(null,username,password,sex , l ,address,jieshao,birthday);

        boolean b = ud.regUserinfo(userinfo);
        System.out.println(b);

五.工具类.生成Connetion链接供dao包下的类使用

public class JDBCUtil {

    /*
        1.静态化加载驱动
        2.声明一个可以返回COnnetion链接静态方法供dao去使用
    */

    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("加载mysql驱动失败" + e);
        }
    }

    public static Connection getConn(){
        try {
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "root");
            return connection;
        } catch (SQLException e) {
            System.out.println("获取链接失败" + e);
            return  null;
        }

    }

}

六.某些地方如何修改

1. 修改tomcat的conf文件夹的logging.properties文件 将下面这行改成GBK
  #java.util.logging.ConsoleHandler.encoding = GBK  默认是UTF-8

2.File-setting-console编码改成GBK

3.File-setting-FileEncoding 三个地方改成UTF-8

七前台发送请求的三种方式的注意事项

<p>前台发送携带数据的请求的方式1:通过超链接</p>
<p>语法如下:在URL地址的后面加上?key=value&key=value&key=value的形式即可</p>
<p>注意事项:都是英文状态下的符号,如果含有中文的内容 也无需加引号</p>
<a href="index.html?id=123&name=张三">指向互联网资源</a>

<hr>
<p>前台发送携带数据的请求的方式1:通过JS</p>
<button id="btn">点击按钮发送一个请求</button>

<hr>
<p>前台发送请求的方式3:通过表单</p>
<p>注意事项:内部的表达元素都要加上name来修饰。因为后台都是通过name来获取值</p>
<p>注意事项:单选框:加上若干个相同的name即可,记得补充value</p>
<p>注意事项:多选框:加上若干个相同的name即可,记得补充value</p>
<p>注意事项:下拉框:内部的option的value值可以省略的,但是你要知道,如果省略了以option标签的内部为准。如果没省略就以value为准</p>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值