web程序设计

第一章回顾:

掌握以下内容即可:概念需要基本的了解

 

    1.Java的三个体系

        JavaSE JavaME JavaEE

 

 

    2.互联网的产品的架构体系

        B/S C/S

 

 

    3.服务器和Tomcat服务器的相关概念

 

 

    4.掌握如何创建一个Web项目并用tomcat部署

 

 

    5.一个web项目至少需要的package

            test , entity , dao , util , servlet

 

 

    6.如何解决控制台的tomcat乱码

    需要修改的地方:

    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

    

 

    7.访问web项目的域名的格式问题

        弄清楚localhost和本级ip地址的区别

        localhost表示本机地址IP地址,只能自己访问。

        如果想要别人访问。就必须改成真实的IP地址

 

 

    8.项目首页的设置

        默认是index.html 如果想要修改成制定的页面,需要修改web.xml文件的内容。

 

         <welcome-file-list>

            <welcome-file>aaa.html</welcome-file>

         </welcome-file-list>

 

UserInfoDao

import com.yyzy.entity.Userinfo;

import com.yyzy.util.JDBCUtil;

 

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.SQLException;

 

public class UserInfoDao {

 

 

    //注册用户

    public boolean regUserinfo(Userinfo userinfo){

        String sql = "insert into userinfo values(null,?,?,?,?,?,?,?)";

        Connection conn = JDBCUtil.getConn();

        try {

            PreparedStatement pre = conn.prepareStatement(sql);

            pre.setString(1,userinfo.getUsername());

            pre.setString(2,userinfo.getPassword());

            pre.setString(3,userinfo.getSex());

            pre.setString(4,userinfo.getLikes());

            pre.setString(5,userinfo.getAddress());

            pre.setString(6,userinfo.getJieshao());

            pre.setString(7,userinfo.getBirthday());

            int i = pre.executeUpdate();

            if (i == 1) {

                return true;

            }else{

                return false;

            }

        } catch (SQLException e) {

            System.out.println("解析sql语句失败" + e);

            return false;

        }

    }

}

Userinfo

public class Userinfo {

    private Integer id;

    private String username;

    private String password;

    private String sex;

    private String likes;

    private String address;

    private String jieshao;

    private String birthday;

 

    public Userinfo() {

    }

 

    public Userinfo(Integer id, String username, String password, String sex, String likes, String address, String jieshao, String birthday) {

        this.id = id;

        this.username = username;

        this.password = password;

        this.sex = sex;

        this.likes = likes;

        this.address = address;

        this.jieshao = jieshao;

        this.birthday = birthday;

    }

 

    public Integer getId() {

        return id;

    }

 

    public void setId(Integer id) {

        this.id = id;

    }

 

    public String getUsername() {

        return username;

    }

 

    public void setUsername(String username) {

        this.username = username;

    }

 

    public String getPassword() {

        return password;

    }

 

    public void setPassword(String password) {

        this.password = password;

    }

 

    public String getSex() {

        return sex;

    }

 

    public void setSex(String sex) {

        this.sex = sex;

    }

 

    public String getLikes() {

        return likes;

    }

 

    public void setLikes(String likes) {

        this.likes = likes;

    }

 

    public String getAddress() {

        return address;

    }

 

    public void setAddress(String address) {

        this.address = address;

    }

 

    public String getJieshao() {

        return jieshao;

    }

 

    public void setJieshao(String jieshao) {

        this.jieshao = jieshao;

    }

 

    public String getBirthday() {

        return birthday;

    }

 

    public void setBirthday(String birthday) {

        this.birthday = birthday;

    }

 

    @Override

    public String toString() {

        return "Userinfo{" +

                "id=" + id +

                ", username='" + username + '\'' +

                ", password='" + password + '\'' +

                ", sex='" + sex + '\'' +

                ", likes='" + likes + '\'' +

                ", address='" + address + '\'' +

                ", jieshao='" + jieshao + '\'' +

                ", birthday='" + birthday + '\'' +

                '}';

    }

}

AServlet

/*

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

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

    2.在类上加上@WebServlet("/xxx") 注意/表示绝对路径 Xxx表示请求的路径名

    表示该类是可以和前台进行交互了

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

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

*/

 

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

 

@WebServlet("/AServlet")

public class AServlet extends HttpServlet {

 

    @Override

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("进来了AServlet");

 

        //如何接受前台传递过来的参数 注意事项:接受的返回值全是String 需要自行转换req.getParameter("id");只能获取单个参数

        String id = req.getParameter("id");

        String age = req.getParameter("age");

        String name = req.getParameter("name");

        System.out.println(id + "~~" + name + "~~" +age);

 

    }

}

BServlet

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

 

@WebServlet("/BServlet")

public class BServlet extends HttpServlet {

 

    @Override

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("进来了BServlet");

        String id = req.getParameter("id");

        String sex = req.getParameter("sex");

        System.out.println(id + "~~" + sex);

    }

}

CServlet

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

 

@WebServlet("/CServlet")

public class CServlet extends HttpServlet {

 

    @Override

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("进来了CServlet");

        req.setCharacterEncoding("utf-8");

 

 

        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);

        String address = req.getParameter("address");

        System.out.println(address);

        //类似于多选框的 就不能用上面的方式 因为上面的只能获取单个

        String[] likes = req.getParameterValues("likes");

        for(int i = 0 ;i<likes.length;i++){

            System.out.println(likes[i]);

        }

        String jieshao = req.getParameter("jieshao");

        System.out.println(jieshao);

        String birthday = req.getParameter("birthday");

        System.out.println(birthday);

    }

}

RegServlet

package com.yyzy.servlet;
 
import com.yyzy.dao.UserInfoDao;
import com.yyzy.entity.Userinfo;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
 
@WebServlet("/RegServlet")
public class RegServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //接受数据的流程:
        //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);
    }
}

TestServlet

package com.yyzy.servlet;

 

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

 

@WebServlet("/TestServlet")

public class TestServlet extends HttpServlet {

 

    @Override

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("访问成功");

    }

}

Test

package com.yyzy.test;

 

import com.yyzy.dao.UserInfoDao;

import com.yyzy.entity.Userinfo;

import com.yyzy.util.JDBCUtil;

 

import java.sql.Connection;

 

public class Test {

 

 

    public static void main(String[] args) {

// Connection conn = JDBCUtil.getConn();

// System.out.println(conn);

        UserInfoDao ud = new UserInfoDao();

        Userinfo userinfo = new Userinfo(null,"张三","1234","男" , "吃,玩","广东","我是牛吗","19999-1-1");

 

        boolean b = ud.regUserinfo(userinfo);

        System.out.println(b);

 

    }

}

JDBCUtil

package com.yyzy.util;

 

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

 

//工具类。生成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;

        }

    }

}

aaa

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>这是aa页面

 

</body>

</html>

index

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

 

       <a href="index1.html">前台发送请求的三种方式</a><br><br><br>

       <a href="index2.html">后台如何接受前台发出的请求---Servlet创建方式</a><br><br><br>

       <a href="index3.html">前台如何发送带有数据的请求</a><br><br><br>

       <a href="index4.html">后台如何接受前台的数据</a><br><br><br>

       <a href="index5.html">实现用户注册基础版</a><br><br><br>

       <a href="index6.html">实现用户注册进阶版</a><br><br><br>

 

        <p>web项目是存在缓存问题的:好处就是节省流量节省加载时间。</p>

        <p>web项目是存在缓存问题的:坏处就是无法得到理想的正确的结果。</p>

        <p>Web缓存存在的两个地方 : 1.浏览器内部--更多工具--清除浏览数据</p>

        <p>Web缓存存在的两个地方 : 2.idea项目内部的out目录(加载web项目的缓存目录)</p>

 

 

 

</body>

</html>

index1

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

    <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>

</body>

</html>

index2

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

 

        <p>后台如何获取前台发来的请求</p>

        <p>答:通过tomcat提供的Servlet类来实现</p>

        <p>什么是Servlet:处理前台请求的一个类</p>

        <p>如何去创建Servlet:</p>

        <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>

</body>

</html>

index3

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

<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>

 

<form action="/RegServlet" method="post">

    账号:<input type="text" name="username"><br>

    密码:<input type="password" name="password"><br>

    性别:

    <input type="radio" name="sex" value="男" checked >男

    <input type="radio" name="sex" value="女" >女<br>

    爱好:

    <input type="checkbox" name="likes" value="吃">吃

    <input type="checkbox" name="likes" value="喝">喝

    <input type="checkbox" name="likes" value="玩">玩

    <input type="checkbox" name="likes" value="乐">乐

    <br>

    地址:

    <select name="address">

        <option>湖南</option>

        <option value="123广东~">广东</option>

        <option>云南</option>

    </select> <br>

    自我介绍:

    <textarea name="jieshao">自我介绍:</textarea>

    <br>

    生日:<input type="date" name="birthday"><br>

    <input type="submit" value="提交">

</form>

 

 

<script>

    document.getElementById("btn").onclick = function (){

        location.href = "index.html?id=456";//本质依然是超链接

    }

</script>

</body>

</html>

index4

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

    <p>后台接受数据的方式:详情见RegServlet</p>

</body>

</html>

index5

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

 

<form action="/RegServlet" method="post">

    账号:<input type="text" name="username"><br>

    密码:<input type="password" name="password"><br>

    性别:

    <input type="radio" name="sex" value="男" checked >男

    <input type="radio" name="sex" value="女" >女<br>

    爱好:

    <input type="checkbox" name="likes" value="吃">吃

    <input type="checkbox" name="likes" value="喝">喝

    <input type="checkbox" name="likes" value="玩">玩

    <input type="checkbox" name="likes" value="乐">乐

    <br>

    地址:

    <select name="address">

        <option>湖南</option>

        <option value="123广东~">广东</option>

        <option>云南</option>

    </select> <br>

    自我介绍:

    <textarea name="jieshao">自我介绍:</textarea>

    <br>

    生日:<input type="date" name="birthday"><br>

    <input type="submit" value="提交">

</form>

 

 

<script>

 

</script>

</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值