过滤器完成步骤

1、实现javax.servlet.filter接口

public class Filter implements javax.servlet.Filter{

2、在web.xml文件中配置过滤器,相同于配置servlet

<filter>
		<filter-name>SecondFilter</filter-name>
		<filter-class>com.lanou.product.SecondFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>SecondFilter</filter-name>
		<url-pattern>/list</url-pattern>
	</filter-mapping>

3、根据逻辑条件决定是否执行下一环,并且在进入下一环之前对request和response进行编码格式等处理

public class Filter implements javax.servlet.Filter{
	public void destroy() {
		
	}
	
	//chain 连接很多相同内容就可以形成链条
	public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain)
			throws IOException, ServletException {
		//给Servlet设置编码格式
		req.setCharacterEncoding("UTF-8");
		resp.setCharacterEncoding("UTF-8");
		resp.setCharacterEncoding("text/html;charset=UTF-8");
		System.out.println("Filter中的执行:调用servlet之前的一段代码");
		//这里里就是执行Servlet,整个Servlet执行结束执行这个语句		
		filterChain.doFilter(req,resp);
		System.out.println("Filter中的执行:调用servlet之后执行的代码");
	}

	public void init(FilterConfig arg0) throws ServletException {
		System.out.println("初始化");
	}	
}

创建Servlet的两种方式

1、继承HttpServlet,重写doGet和doPost方法

特点:获取的参数是HttpServletRequest和HttpServletResponse

代码示例:

package com.lanou.product;

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 MyServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("Servlet中的执行:我是HttpServlet的执行");
		//这里是被filter设置编码格式,但是这里是输出语句,无法设置
		PrintWriter out = resp.getWriter();
		out.println("<h1>hh 我是h1在页面的输出</h1>");
		//out.close();
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}

2、实现Servlet接口,重写service方法,处理请求。

特点:获取的参数是ServletRequest和ServletResponse

代码示例:

package com.lanou.product;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.omg.CORBA.PUBLIC_MEMBER;

public class InterServlet implements Servlet{

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

	@Override
	//处理请求的地方,请求过来就执行的方法
	public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
		System.out.println("serivce方法执行了");
		String name = request.getParameter("name");
		System.out.println("name:"+ name);
	}
	
}

3、两者之间差别

HttpServlet比后者多了一些对于cookie的操作,带有一些http信息

CSS布局中浮动的特点

1、脱离文档流

2、向左或者向右浮动知道遇到父级元素或者另一个浮动元素

3、浮动子元素会影响父级元素,导致父级元素高度坍塌,父级元素需要清浮动

清浮动

1、clear:both;

2、清浮动本质:在浮动元素的上边或者下边添加足够的空间

JDBC

作用:由Java语言编写,Java通过JDBC连接数据库,进行增删改查操作

连接数据库的步骤

1、首先使用连接到什么类型的数据库,使用什么类型的驱动

2、具体连接到哪个数据库

3、生成sql指令

4、根据sql指令生成对象

5、执行sql对象,得到结果集

6、使用while循环遍历结果集,得到数据库中表中具体的信息

连接数据库部分代码示例

public class UserDao {
	//接收用户名密码
	public User login(String username,String password) {
		//加了双引号无提示
		try {
			//知道使用的是mysql的驱动
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		try {
			//创建连接,知道连接哪台电脑的哪个数据库
			Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/user?characterEncoding=utf-8","root","root");
			//生成sql语句
			String sql = "select * from hhh";
			//根据sql语句生成对象
			PreparedStatement ps = connection.prepareStatement(sql);
			//真正的执行sql语句,得到结果集
			ResultSet rs = ps.executeQuery();
			//通过rs.next()来判断结果集是否循环完了
			while(rs.next()) {
				//在循环中rs就是当前的这个结果
				//我们可以通过rs.getString等方法来获取结果集中对应字段的值,都有getString(int 下标)和getString(String 字段名)两种方式供我们使用
				String uName = rs.getString("name");
				String pass = rs.getString("password");
				int id = rs.getInt("uid");
				System.out.println("取到的记录"+"id:"+id+"name:"+uName+"password:"+pass);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
}