一、httpServlet
1.导包
//找包 通过搜索 maven servlet(类名) 到pom.xml导包
<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
</dependencies>
2. 创建Servlet
2.1无参
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
ProductService ps=new ProductService();
ArrayList ls=ps.selectAll();
String rs=JSONObject.toJSONString(ls);//把一个对象转成json格式的字符串
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.getWriter().append(rs);
}
把一个对象转成json格式的字符串:实现中文识别
response.getWriter().append("hello Java10 ");.append(request.getContextPath());
//默认情况不能识别中文
String rs=JSONObject.toJSONString(ls);
//这句话的意思,是告诉servlet用UTF-8转码
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");//html
response返回有两种,一种是字节流outputstream,一种是字符流printwrite。
- 字符流,要输出中文,需要设置response.setCharacterEncoding(“UTF-8”);
详细:https://blog.youkuaiyun.com/tlms_/article/details/78749980 - response.setContentType(MIME) 的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。
(web浏览器就是通过MIME类型来判断文件是GIF图片。通过MIME类型来处理json字符串)
详细:https://blog.youkuaiyun.com/qq_42108192/article/details/81938674
效果
//http://localhost:8080/homework/UserServlet
2.2有参
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//取出请求中的参数
String productname=request.getParameter("pname");
ProductService ps=new ProductService();
Product p1=ps.findByName(productname);
//把一个对象转成json格式的字符串
String rs=JSONObject.toJSONString(p1);
//解决中文乱码问题
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.getWriter().append(rs);
}
取出请求中的参数
String productname=request.getParameter("pname");
效果
//http://localhost:8080/homework/StudentService?pname=香蕉
二、java 继承
父类
public class Parent {
public String name;
public int id;
public int add(int a,int b) {
return a+b;
}
}
子类
public class Child extends Parent{
public int age;
public int delive(int a, int b) {
return a-b;
}
}
extends表示继承
-
A extends B 表示:A继承了B,也就是A是子类,B是父类
-
子类拥有父类的属性和方法
-
父子都有一个方法名字一样,参数一样,返回类型一样的方法
//这叫,“方法重写”(override)
public class Child extends Parent{
public int add(int a,int b) {
return a+b+1;
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Child c=new Child();
Parent p=new Parent();
c.age=10;
c.id=1;//父类属性
c.name="小花花";//父类属性
//c.add(1, 2);//子类继承父类的方法
p.id=2;
p.name="小花花父亲";
System.out.println("子类继承了父类的属性------"+c.id+c.name);
System.out.println("子类加法:"+c.add(3, 4));//--8
System.out.println("父类加法:"+p.add(3, 4));//--7
}
多态
//声明变量的类型是父类
//构造方法用的是子类的构造方法
Parent p2=new Child();
System.out.println("多态加法:"+p2.add(3, 4));
注意:创建的是子类的对象(看构造方法) 所以输出结果:8