• JavaWeb笔记


    JavaWeb笔记

    一、servlet

    真正helloServlet所在的位置

     

     

     

    HelloServlet.java

    package net.zixue.servlet;

    import jdk.nashorn.internal.runtime.arrays.IteratorAction;

    import javax.lang.model.element.NestingKind;

    import javax.servlet.ServletConfig;

    import javax.servlet.ServletException;

    import javax.servlet.ServletOutputStream;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    import java.io.IOException;

    import java.io.PrintWriter;

    import java.util.Enumeration;

    import java.util.Iterator;

    import java.util.Map;

    /**

     * Created by invinjun on 2017/5/25.

     */

    public class HelloServlet extends HttpServlet{

        @Override

        public void init() throws ServletException {

            super.init();

            ServletConfig servletConfig = this.getServletConfig();

            String encoding = servletConfig.getInitParameter("encoding");

            System.out.println("encoding="+encoding);

        }

        @Override

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

            //获取请求行

    //        System.out.println("接收到get请求");

    //        System.out.println("请求方式:"+request.getMethod());

    //        System.out.println("URI:"+request.getRequestURI());

    //        System.out.println("发出请求客户端IP地址:"+request.getRemoteAddr());

    //        System.out.println("服务点接收请求的IP地址:"+request.getLocalAddr());

    //        System.out.println("访问客户端的端口号:"+request.getRemotePort());

    //        System.out.println("web应用路径:"+request.getContextPath());

    //        System.out.println("http协议和版本:"+request.getProtocol());

    //        //获取请求头

    //        Enumeration<String> headerNames = request.getHeaderNames();

    //        while (headerNames.hasMoreElements()){

    //            String element = headerNames.nextElement();

    //            System.out.println(element+":"+request.getHeader(element));

    //        }

    //

    //       //获取请求参数

    //        String name = request.getParameter("name");

    //        String passWord = request.getParameter("passWord");

    //        System.out.println("用户名:"+name);

    //        System.out.println("密码:"+passWord);

    //

    //       String result="恭喜您登录成功";

    ////        ServletOutputStream outputStream = response.getOutputStream();

    ////        outputStream.write(result.getBytes());

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

    //        PrintWriter writer = response.getWriter();

    //        writer.write(result);

            request.setAttribute("name","123");

            request.getRequestDispatcher("/index.jsp").forward(request,response);

        }

        @Override

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

            System.out.println("接收到post请求");

        }

    }

    web.xml

    <?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_3_1.xsd"

             version="3.1">

        <session-config>

            <session-timeout>10</session-timeout>

        </session-config>

        <context-param>

        <param-name>encoding</param-name>

        <param-value>utf-8</param-value>

    </context-param>

        <context-param>

            <param-name>encoding1</param-name>

            <param-value>utf-8</param-value>

        </context-param>

    <servlet>

        <servlet-name>helloServlet</servlet-name>

        <servlet-class>net.zixue.servlet.HelloServlet</servlet-class>

    </servlet>

        <servlet-mapping>

            <servlet-name>helloServlet</servlet-name>

            <url-pattern>/hi</url-pattern>

        </servlet-mapping>

    </web-app>

    二、cookie

     

     

     

    TimeServlet.java

    package net.zixue.cookie;

    import javax.servlet.ServletException;

    import javax.servlet.annotation.WebServlet;

    import javax.servlet.http.Cookie;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    import java.io.IOException;

    import java.text.SimpleDateFormat;

    import java.util.Date;

    /**

     * Created by invinjun on 2017/6/9.

     */

    @WebServlet(name = "TimeServlet", urlPatterns = "/time")

    public class TimeServlet extends HttpServlet {

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

            //记录访问时间并其通过cookie加入到响应头

            Date date = new Date();

            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd-hh:mm:ss");

            String time = simpleDateFormat.format(date);

            Cookie cookie = new Cookie("time", time);

            cookie.setMaxAge(60*60*24);

            response.addCookie(cookie);

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

            //获取客户端浏览器发送过来的cookie数据

            Cookie[] cookies = request.getCookies();

            String timeValue = null;

            for (Cookie cookie1 : cookies) {

                if (cookie1.getName().equals("time")) {

                    timeValue = cookie1.getValue();

                }

            }

            if (timeValue == null) {

                response.getWriter().write("欢迎您访问我们的网站");

            } else {

                response.getWriter().write("您上次访问网站的时间是:" + timeValue);

            }

        }

    }

    三、JSP

    JSP做页面,servlet做处理

    JSP的9大内置对象

    四、EL表达式+JSTL标签

    servlet获取数据,传给jsp页面,jsp页面显示数据

    PhoneListServlet.java

    package net.zixue.JSP;

    import net.zixue.bean.Phone;

    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;

    import java.util.ArrayList;

    import java.util.List;

    /**

     * Created by invinjun on 2017/6/16.

     */

    @WebServlet(name = "PhoneListServlet",urlPatterns = "/phoneList")

    public class PhoneListServlet extends HttpServlet {

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

            //通过servlet从数据库中获取数据,我们这里暂时通过手动创建数据

            Phone phone=new Phone();

            phone.setName("iphone6");

            phone.setId(001);

            phone.setImage("https://img10.360buyimg.com/n7/jfs/t277/193/1005339798/768456/29136988/542d0798N19d42ce3.jpg");

            phone.setPrice("3900");

            Phone phone1=new Phone();

            phone1.setName("坚果pro");

            phone1.setId(002);

            phone1.setPrice("1799");

            phone1.setImage("https://img13.360buyimg.com/n7/jfs/t5377/56/1578379545/209772/32105f74/5911bcbdN7afa707b.jpg");

            Phone phone2=new Phone();

            phone2.setName("vivo x9");

            phone2.setPrice("2345");

            phone2.setId(003);

            phone2.setImage("https://img12.360buyimg.com/n7/jfs/t6067/340/2101390376/231820/750cc50e/593aa83fN8b0829fc.jpg");

            Phone phone3=new Phone();

            phone3.setName("oppo A57");

            phone3.setId(004);

            phone3.setPrice("1399");

            phone3.setImage("https://img10.360buyimg.com/n7/jfs/t4978/185/135948089/78285/f6a84203/58db6fa4N354322d9.jpg");

            Phone phone4=new Phone();

            phone4.setName("诺基亚6");

            phone4.setId(005);

            phone4.setPrice("1699");

            phone4.setImage("https://img11.360buyimg.com/n7/jfs/t4930/86/192598423/86027/36a57ccf/58dcbfa5N5c41cbfd.jpg");

            Phone phone5=new Phone();

            phone5.setName("小米MIX");

            phone5.setId(006);

            phone5.setPrice("3999");

            phone5.setImage("https://img13.360buyimg.com/n7/jfs/t4264/215/455518113/309855/38fe41f1/58b4fc81N1d924112.jpg");

            List<Phone> list=new ArrayList<>();

            list.add(phone);

            list.add(phone1);

            list.add(phone2);

            list.add(phone3);

            list.add(phone4);

            list.add(phone5);

            request.setAttribute("list",list);

            request.getRequestDispatcher("/phone_list.jsp").forward(request,response);

        }

    }

    phone_list.jsp

    <%--

      Created by IntelliJ IDEA.

      User: invinjun

      Date: 2017/6/16

      Time: 16:57

      To change this template use File | Settings | File Templates.

    --%>

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>

    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    <!DOCTYPE html>

    <html>

    <head>

        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>商品列表</title>

        <link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" />

        <script src="js/jquery-1.11.3.min.js" type="text/javascript"></script>

        <script src="js/bootstrap.min.js" type="text/javascript"></script>

        <!-- 引入自定义css文件 style.css -->

    </head>

    <body>

    <c:forEach items="${list}" var="phone">

        <div class="col-md-2" style="height:250px">

            <img src="${phone.image}" width="170" height="170" style="display: inline-block;">

            </a>

            <p>

                <a href="product_info.html" style='color: green'>${phone.name}</a>

            </p>

            <p>

                <font color="#FF0000">商城价:&yen;${phone.price}</font>

            </p>

        </div>

    </c:forEach>

    </body>

    </html>

     

    bootstrap.min.css(前30行)

    /*!

     * Bootstrap v3.3.5 (http://getbootstrap.com)

     * Copyright 2011-2015 Twitter, Inc.

     * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)

     */

    /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */

    html {

        font-family: sans-serif;

        -webkit-text-size-adjust: 100%;

        -ms-text-size-adjust: 100%

    }

     

    body {

        margin: 0

    }

     

    article, aside, details, figcaption, figure, footer, header, hgroup,

        main, menu, nav, section, summary {

        display: block

    }

     

    audio, canvas, progress, video {

        display: inline-block;

        vertical-align: baseline

    }

     

    audio:not ([controls] ){

        display: none;

        height: 0

    }

    Phone.java

    package net.zixue.bean;

    /**

     * Created by invinjun on 2017/6/16.

     */

    public class Phone {

        private int id;

        private String name;

        private String image;

        private String price;

        public int getId() {

            return id;

        }

        public void setId(int id) {

            this.id = id;

        }

        public String getName() {

            return name;

        }

        public void setName(String name) {

            this.name = name;

        }

        public String getImage() {

            return image;

        }

        public void setImage(String image) {

            this.image = image;

        }

        public String getPrice() {

            return price;

        }

        public void setPrice(String price) {

            this.price = price;

        }

    }

    五、SQL注入

     

    Login.java

    package net.zixue.crud;

    import net.zixue.utils.JDBCUtil;

    import java.math.BigDecimal;

    import java.sql.*;

    /**

     * Created by Administrator on 2017/6/24.

     */

    public class Login {

        public  void login(String account,String password) throws ClassNotFoundException, SQLException {

            Connection connection = JDBCUtil.getConnection();

            // 3.获取操作数据库的对象

            Statement statement = connection.createStatement();

            String sql="select * from user WHERE account='"+account+"' AND password='"+password+"'";

            ResultSet resultSet = statement.executeQuery(sql);

            // 4.  取出数据

            if (resultSet.next()){

                String name=resultSet.getString("nickname");

                System.out.println(name+"登录成功" );

            }else{

                System.out.println("登陆失败");

            }

            release(connection, statement, resultSet);

        }

        private void release(Connection connection, Statement statement, ResultSet resultSet) throws SQLException {

            resultSet.close();

            statement.close();

            connection.close();

        }

        public  void login1(String account,String password) throws ClassNotFoundException, SQLException {

            Class.forName("com.mysql.jdbc.Driver");

            // 2.获取数据库连接

            String url="jdbc:mysql://localhost:3306/mall";

            Connection connection = DriverManager.getConnection(url, "root", "root");

            // 3.获取操作数据库的对象

    //        Statement statement = connection.createStatement();

            String sql="select * from user WHERE account=? AND password=?";

            PreparedStatement preparedStatement = connection.prepareStatement(sql);

    //        ResultSet resultSet = statement.executeQuery(sql);

            preparedStatement.setString(1,account);

            preparedStatement.setString(2,password);

            ResultSet resultSet = preparedStatement.executeQuery();

            // 4.  取出数据

            if (resultSet.next()){

                String name=resultSet.getString("nickname");

                System.out.println(name+"登录成功" );

            }else{

                System.out.println("登录失败");

            }

            resultSet.close();

            preparedStatement.close();

            connection.close();

        }

    }

    LoginTest.java

    package net.zixue.crud;

    import org.junit.Test;

    import static org.junit.Assert.*;

    /**

     * Created by Administrator on 2017/6/24.

     */

    public class LoginTest {

        @Test

        public void login() throws Exception {

            Login login=new Login();

            login.login1("xiaoming","123");

        }

    }

    JDBCUtil.java

    package net.zixue.utils;

    import java.io.IOException;

    import java.io.InputStream;

    import java.sql.*;

    import java.util.Properties;

    /**

     * Created by Administrator on 2017/6/24.

     */

    public class JDBCUtil {

        private static String driver;

        private static String url;

        private static String username;

        private static String password;

    //静态代码块 初始化配置文件信息

      static {

            try {

            ClassLoader classLoader = JDBCUtil.class.getClassLoader();

            InputStream resourceAsStream = classLoader.getResourceAsStream("db.propertise");

            Properties properties=new Properties();

                properties.load(resourceAsStream);

                driver = properties.getProperty("driver");

                url = properties.getProperty("url");

                username = properties.getProperty("username");

                password = properties.getProperty("password");

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        public static Connection getConnection() {

            Connection connection = null;

            //注册驱动,获取连接

            try {

                Class.forName(driver);

                connection = DriverManager.getConnection(url, username, password);

            } catch (Exception e) {

                e.printStackTrace();

            }

            return connection;

        }

        public static void release(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) {

                //释放资源

            if (resultSet != null) {

                try {

                    resultSet.close();

                } catch (SQLException e) {

                    e.printStackTrace();

                }

            }

            if (preparedStatement != null) {

                try {

                    preparedStatement.close();

                } catch (SQLException e) {

                    e.printStackTrace();

                }

            }

            if (connection != null) {

                try {

                    connection.close();

                } catch (SQLException e) {

                    e.printStackTrace();

                }

            }

        }

    }

    修改代码很复杂,但是修改配置文件很简单

    还有就是注意一下上面为什么使用静态代码块

    db.propertise

    driver=com.mysql.jdbc.Driver

    url=jdbc:mysql://localhost:3306/mall

    username=root

    password=root

  • 相关阅读:
    JavaWeb(一)
    关于servlet的配置
    jquery中attr和prop的区别
    javascript-02
    javascript-01
    css
    css-02
    html扫盲-01
    Java 之 FileReader FileInputStream InputStreamReader BufferedReader 作用与区别
    Eclipse项目的.classpath文件
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7684900.html
Copyright © 2020-2023  润新知