Java Web 实习笔记(二)

Java web实习笔记目录导航

1. Java Web 实习笔记(一)

2.Java  Web 实习笔记(二)

3.Java Web 实习笔记(三)

4.Java Web 实习笔记(四)

笔记(一)复习:

新建一个项目,创建一个新的servlet(SecondServlet,不要直接叫servlet)配置好web.xml,部署到Tomcat服务器上,通过浏览器访问到该servlet

一、HTTP协议

1.一种数据传输格式

2.数据包(报文)的形式

(1)请求数据包

    ①浏览器:服务器发送请求时

    ②请求行:请求浏览器以及地址信息

    ③消息头:以一种name-value的形式存在的数据

    ④实体内容:实体参数

(2)相应数据包

    ①服务器:服浏览器发送请求时

    ②状态行:信息提示码-状态码

    ③消息头

    ④实体内容

二、如何处理HTTP协议

1.使用Servlet

  (1)任何的一个http的连接在传输数据时都会被分解为两个部分

    ①请求(HttpServletRequest)

    ②接受(HttpServletReseponse)

package web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.ws.Response;


/**
 * @author HMM
 * 所有自定义的servlet 都是servlet接口的实现类
 *
 */
public class FirstServlet extends HttpServlet{
	//重写service方法
	/*
	 * 此方法中有两个参数
	 * HttpServletRequest 请求 请求数据报数据
	 * HttpServletResponse 响应 响应数据报的数据
	 * */
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		System.out.println("这是一个servlet,已经接收到前端的请求");
		//当前访问此servlet的网址 http://localhost:8080/day01/firstServlet
		String uri=request.getRequestURI();
		System.out.println(uri);
		//设置响应的编码格式,一定要在输出流之前,不然会乱码
		response.setContentType("text/html;charset=UTF-8");
		//做出响应 得到响应对象的网络输出流
		PrintWriter out =response.getWriter();
		out.println("你好啊");
		
	}
}

Java Web 实习笔记(二)_第1张图片

三、写登录

1.登录界面

(1).新建login.html





登录


	
	
账号:
密码:

注:如果是get方法

Java Web 实习笔记(二)_第2张图片

(2).新建LoginServlet

package web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet{

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		//得到请求参数
		String code=request.getParameter("code");
		String pwd=request.getParameter("pwd");
		//设置请求的编码格式,一定要在输出流之前,不然会乱码
		response.setContentType("text/html;charset=UTF-8");
		//做出相应,得到响应对象的网络输出流
		PrintWriter out=response.getWriter();
		if(code.equals("hmm")&&pwd.equals("123")) {
			out.println("COME ON BABY!!");
		}else {
			out.println("啊哦...");
		}
	}
	

}

(3)在web.xml里添加配置



  day01
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  
  
  
  
 	 
  	first
  	
  	web.FirstServlet
  
  
  	
  	first
	
	/firstServlet
  
  
   
  
  	login
  	web.LoginServlet
  
  
  	login
  	/login
  

Java Web 实习笔记(二)_第3张图片

三、JSP

Java Web 实习笔记(二)_第4张图片

四、JSP

1.jsp的组成部分

(1)HTML(主体部分)
(2)java代码

    ①java小脚本

    ②java表达式

    ③标签

(3)jsp特有语法

    ①jsp的标签 page include taglib

    ②el表达式:简化了java表达式

    ③jstl标签:简化了java代码

2.什么是JSP

(1)Servlet的页面表示形式,本质上是一个java代码(Servlet),jsp在架子啊时会先转换为java代码,再编译运行

 

3.WEB根目录下的文件和WEB-INF下的文件的区别

    WEB-INF下的文件只能通过服务器访问(转发)

五、重定向和转发

1.重定向

服务器立刻发出一个响应给浏览器,发出的是一个302状态码和一个消息头(location=url)

(1)重定向的地址必须是浏览器能访问到地址,不能是WEB-INF下的,但是可以是相同服务器的其他网址或者其他服务器地址(重定向的地址实际上就是)

Java Web 实习笔记(二)_第5张图片

2.转发

同一个服务器内部进行的,将未完成的请求转交给下一个组件(web组件:Server,Filter,...)继续处理

Java Web 实习笔记(二)_第6张图片

3.区别

(1)重定向实际是浏览器进行了2次请求,转发只是一次请求

(2)地址栏的地址,重定向是改变的,但是转发没有改变

(3)重定向的地址(看上面),转发的地址只能是当前服务器地址(因为转发是在服务器内部进行的)

六、关系型数据库

1.遵循ORM映射

(1)数据库中的一张表对应Java中的一个实体类

(2)数据库中的一个字段名对应一个实体类中的成员变量

(3)数据库中的表数据,一条数据对应一个实体类对象

Java Web 实习笔记(二)_第7张图片Java Web 实习笔记(二)_第8张图片

2.创建实体类

(1)重写toString方法

(2)添加无参和有参构造

  (3)重写equals和hashCode方法

 (4)实现序列化接口并生成唯一标识

package com.hmm.entity;

import java.io.Serializable;

public class User implements Serializable{

	private static final long serialVersionUID = -1413125173463696530L;
	private Integer userId;
	private String userName;
	private String userPassword;
	
	//无参构造
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	//有参构造
	public User(Integer userId, String userName, String userPassword) {
		super();
		this.userId = userId;
		this.userName = userName;
		this.userPassword = userPassword;
	}
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPassword() {
		return userPassword;
	}
	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((userId == null) ? 0 : userId.hashCode());
		result = prime * result + ((userName == null) ? 0 : userName.hashCode());
		result = prime * result + ((userPassword == null) ? 0 : userPassword.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		User other = (User) obj;
		if (userId == null) {
			if (other.userId != null)
				return false;
		} else if (!userId.equals(other.userId))
			return false;
		if (userName == null) {
			if (other.userName != null)
				return false;
		} else if (!userName.equals(other.userName))
			return false;
		if (userPassword == null) {
			if (other.userPassword != null)
				return false;
		} else if (!userPassword.equals(other.userPassword))
			return false;
		return true;
	}
	@Override
	public String toString() {
		return "User [userId=" + userId + ", userName=" + userName + ", userPassword=" + userPassword + "]";
	}
	
	
}

 

3.使用JDBC连接数据库

 

(1)DBUtils.java

package com.hmm.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;


import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DBUtils {
	private static DataSource dataSource;

	static {
		try {
			InputStream is = DBUtils.class.getClassLoader()
					.getResourceAsStream("db.properties");
			Properties p = new Properties();
			p.load(is);
	
			dataSource = BasicDataSourceFactory.createDataSource(p);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static Connection getConnection() {
		try {
			return getDataSource().getConnection();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
	public static DataSource getDataSource() {
		return dataSource;
	}
	public static void closeConnection(Connection conn){
		try {
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

  (2)db.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/hmm7
username=root
password=123456
initialSize=10
maxActive=50
maxIdle=20
minIdle=5
maxWait=60000
connectionProperties=useUnicode\=true;characterEncoding\=utf8

  (3)jar包(可自行下载)

jar包1下载地址:https://download.csdn.net/download/mogot7/10474753

(4)测试类:TestJdbc.java

package com.hmm.test;

import org.junit.Test;

import com.hmm.util.DBUtils;

public class TestJdbc {
	@Test
	public void test01() {
		System.out.println(DBUtils.getConnection());
	}
}

Java Web 实习笔记(二)_第9张图片

 

 

 

测试成功

 

你可能感兴趣的:(JavaWeb)