JavaWeb笔记

Posted 范仁义

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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笔记的主要内容,如果未能解决你的问题,请参考以下文章

狂神说Java个人笔记-JavaWeb

javaweb笔记分享

javaweb笔记全套

JavaWeb笔记

JavaWeb笔记总结

JavaWeb学习笔记——JDOM