发表于: 2018-10-14 22:33:35

1 513


今天完成的事情:

package cn.itcast.test00;

import java.io.IOException;

import java.lang.reflect.InvocationHandler;

import java.lang.reflect.Method;

import java.lang.reflect.Proxy;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

public class EncodingFilter implements Filter {

    public EncodingFilter() {

    }

public void destroy() {

}

public void init(FilterConfig fConfig) throws ServletException {

}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

//将request对象转换为HttpServletRequest

final HttpServletRequest req=(HttpServletRequest)request;

//让JDK在内存中生成代理对象:增强了req对象上的getParameter(name);API

HttpServletRequest myReq=(HttpServletRequest)Proxy.newProxyInstance(EncodingFilter.class.getClassLoader(), req.getClass().getInterfaces(), new InvocationHandler() {

@Override

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

Object obj=null;

if(method.getName().equalsIgnoreCase("getParameter")){

//获取本次请求方式

String md=req.getMethod();

if("get".equalsIgnoreCase(md)){

//get方式的请求

//调用req对象上的getParameter方法

String v=(String)method.invoke(req, args);

//转码

String vv=new String(v.getBytes("iso-8859-1"),"utf-8");

return vv;

}else{

//post方式的请求

req.setCharacterEncoding("utf-8");

obj=method.invoke(req, args);

}

}else{

obj=method.invoke(req, args);

}

return obj;

}

});

//打印代理对象哈希码

System.out.println(myReq.hashCode());

//将代理对象放行

chain.doFilter(myReq, response);

}

}

---------------------------------------------------------------------------------------------

package cn.itcast.test00;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class ServletDemo extends HttpServlet {

private static final long serialVersionUID = 1L;

       

    public ServletDemo() {

        super();

    }

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

String um=request.getParameter("username");

System.out.println(request.hashCode()+"    :"+um);

}

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

String um=request.getParameter("username");

System.out.println(request.hashCode()+"    :"+um);

}

}

----------------------------------------------------------------------------------------------------

package cn.itcast.test00;

public class Stu {

private  Stu() {

}

private static Stu stu=new Stu();

public static  Stu getInstance(){

return stu;

}

}

-----------------------------------------------------------------------------------------------------

package cn.itcast.test00;

public class TestStu {

public static void main(String[] args) {

Stu stu1=Stu.getInstance();

Stu stu2=Stu.getInstance();

Stu stu3=Stu.getInstance();

System.out.println(stu1);

System.out.println(stu2);

System.out.println(stu3);

}

}

--------------------------------------------------------------------------------------------------

package cn.itcast.test01;

//相当于mysql驱动包,谷歌汽车开发人员实现类

public class GoogleCar implements ICar{

@Override

public void start() {

System.out.println("控制谷歌的汽车启动");

//调用谷歌汽车提供的C语言函数

}

@Override

public void run() {

System.out.println("控制谷歌的汽车运行");

}

@Override

public void stop() {

System.out.println("控制谷歌的汽车停止");

}

}

---------------------------------------------------------------------------------------------------

package cn.itcast.test06;

public class TestClassLoader {

public static void main(String[] args) {

//获取String类的加载器

ClassLoader classLoader = String.class.getClassLoader();

System.out.println(classLoader);

//由于String.class ,int.class等字节码文件需要频繁的被加载内存,速度必须快,底层用其他语言来实现c c++

//获取ext(extendtion)包下的某个类的字节码加载器   ExtClassLoader:扩展类加载器

ClassLoader classLoader2 = sun.net.spi.nameservice.dns.DNSNameService.class.getClassLoader();

System.out.println(classLoader2);

//应用类:程序员实现的所有的类都属于应用类

//获取应用类加载器 AppClassLoader

ClassLoader classLoader3 = TestClassLoader.class.getClassLoader();

System.out.println(classLoader3);

}

}

-----------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,Mapper动态代理开发的时候使用,需要指定Mapper的类路径 -->

<mapper namespace="cn.itcast.mybatis.mapper.OrderMapper">

<!-- resultMap最终还是要将结果映射到pojo上,type就是指定映射到哪一个pojo -->

<!-- id:设置ResultMap的id -->

<resultMap type="order" id="orderResultMap">

<!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id -->

<!-- property:主键在pojo中的属性名 -->

<!-- column:主键在数据库中的列名 -->

<id property="id" column="id" />

<!-- 定义普通属性 -->

<result property="userId" column="user_id" />

<result property="number" column="number" />

<result property="createtime" column="createtime" />

<result property="note" column="note" />

</resultMap>

<!-- 查询所有的订单数据 -->

<select id="queryOrderAll" resultMap="orderResultMap">

SELECT id, user_id,

number,

createtime, note FROM `order`

</select>

</mapper>

-----------------------------------------------------------------------------------------------------

@Test

public void testQueryUserByWhere() {

// mybatis和spring整合,整合之后,交给spring管理

SqlSession sqlSession = this.sqlSessionFactory.openSession();

// 创建Mapper接口的动态代理对象,整合之后,交给spring管理

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

// 使用userMapper执行根据条件查询用户

User user = new User();

user.setSex("1");

user.setUsername("张");

List<User> list = userMapper.queryUserByWhere(user);

for (User u : list) {

System.out.println(u);

}

// mybatis和spring整合,整合之后,交给spring管理

sqlSession.close();

}

-------------------------------------------------------------------------------------------------

@Test

public void testQueryOrderUser() {

// mybatis和spring整合,整合之后,交给spring管理

SqlSession sqlSession = this.sqlSessionFactory.openSession();

// 创建Mapper接口的动态代理对象,整合之后,交给spring管理

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

// 使用userMapper执行根据条件查询用户

List<OrderUser> list = userMapper.queryOrderUser();

for (OrderUser ou : list) {

System.out.println(ou);

}

// mybatis和spring整合,整合之后,交给spring管理

sqlSession.close();

}

------------------------------------------------------------------------------------------------------






明天计划的事情:继续学习
遇到的问题:无 
收获:上面写了


返回列表 返回列表
评论

    分享到