目录
BS架构
编写servlet程序
代码编写:
JSPLesson01\src\com\app\JSPTest01
test01
package com.app.JSPTest01;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class Tes01 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 arg0, ServletResponse arg1) throws ServletException, IOException {
// 响应服务的请求
System.out.println("收到服务的请求了,哈哈哈哈哈");
}
}
test02
package com.app.JSPTest01;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class Test02 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 arg0, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("这是第二个案例");
}
}
test03
package com.app.JSPTest01;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
//servlet生命周期
public class Test03 implements Servlet{
//初始化 进入Servlet程序 只进行一次
public void init(ServletConfig arg0) throws ServletException {
System.out.println("初始化 进入Servlet程序");
}
// 针对请求的服务 每次请求都会执行
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("针对请求的服务");
}
// Servlet销毁 请求时间长后 过期自动销毁Servlet 或者 关闭服务器
public void destroy() {
System.out.println("Servlet销毁了");
}
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
}
test04
package com.app.JSPTest01;
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 Test04 extends HttpServlet{
// 针对get请求 a标签 或者 form标签 get方式 提交 都是 明文显示内容 在url上
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
System.out.println("收到了 get 表单的请求");
//通过数据传输的key 获取 value
String name = req.getParameter("zhanghao");
String mima = req.getParameter("mima");
if (name.equals("zhangsan")&&mima.equals("123321")) {
System.out.println("有这个用户,允许登录");
} else {
System.out.println("非法用户");
}
}
// 针对post请求 暗文传入内容 url上看不到 更加安全
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
doGet(req, resp);//收到了post请求 也让doget处理
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>JSPLesson01</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>hahaha</servlet-name>
<servlet-class>com.app.JSPTest01.Tes01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hahaha</servlet-name>
<url-pattern>/hhhh1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>t2</servlet-name>
<servlet-class>com.app.JSPTest01.Test02</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>t2</servlet-name>
<url-pattern>/ttt1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Test03</servlet-name>
<servlet-class>com.app.JSPTest01.Test03</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test03</servlet-name>
<url-pattern>/Test03</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Test04</servlet-name>
<servlet-class>com.app.JSPTest01.Test04</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test04</servlet-name>
<url-pattern>/Test04</url-pattern>
</servlet-mapping>
</web-app>
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="./Test04" method="get">
账号:<input type="text" name="zhanghao"/>
密码:<input type="password" name="mima"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
知识点:
1.类和结构的区别
1)类是引用类型,结构是值类型
2)类可以继承,结构不能继承,两者都能实现接口
3)类可以有显示的无参构造函数,结构则不能
4)类可以有析构函数,结构则不能
5)结构中不能有实例字段初始值设定,类无限制
6)类的构造函数里可以不用对所有字段进行初始化,结构必须要对所有字段进行初始化
2.C#中类成员访问修饰符有哪些, 并简述其访问权限
public:公有的,任何位置都可以访问
private:私有的,只有类的内部才能访问
protected:受保护的,只有类的内部或派生类中可以访问
internal:内部的,同一个程序集(命名空间)里面可以访问
protected internal:内部受保护的,同一个程序集里面或不同程序集派生类中可以访问
3.面向对象三大特征是什么
封装、继承、多态
4.抽象类和接口的区别
相同点:
1)不能被实例化
2)可以包含任意个抽象成员
不同点:
1)抽象类是类,具有类的特点:单基类继承,多接口实现;接口不是类,只能继承多个接口
2)抽象类中可以包含已经实现的非抽象成员;接口中所有成员都是抽象的,没有实现的
3)定义抽象类关键词:abstract,定义接口关键字:interface
5.接口可以包含哪些成员
方法、属性、事件、索引器
6.什么是装箱和拆箱
装箱:将值类型转换为object类型,或由此值类型实现的任何接口类型
拆箱:将object类型或接口类型转换为实际的值类型
7.值类型和引用类型的区别
1)值类型一般存储在线程栈上,引用类型存储在托管堆上
2)值类型的变量本身实际存储的是实际数据,引用类型的变量本身实际存储的是引用地址,实际的数据存储在托管堆上
3)在作为方法参数传递时,值类型传递的是值的副本在方法中对其修改不会影响原始值。引用类型参数传递的是引用地址,在方法中对该参数进行修改会对托管堆上该地址实际数据进行修改,从而会影响原始值
8.C#中的基本数据类型有哪些
值类型:
1)整数(由小到大):byte、short、int、long
2)浮点型:float、double、decimal
3)布尔型:bool
4)字符型:char
引用类型:
1)string、object
9.重写override和重载的区别
重写:子类对基类中的虚成员(虚方法、虚属性等)或抽象成员(抽象方法、抽象属性等)进行覆盖重新实现
重载:同一个类中,同名方法具有不同的参数签名(参数个数、参数的数据类型、参数是否具有ref、out、params修饰)的实现
10.构造函数是否可以被继承?是否可以被重写?
不能被继承,也不能被重写
11.C#中,ref和out的区别
ref和out作用:使值类型数据按引用类型方式传递
1)ref修饰参数时传入方法前必须初始化;out可以不用
2)ref参数在方法内部可以直接使用;out不可以
3)ref参数在方法内部可以使用也可以不适用;out在方法返回前必须对其赋值
12.什么是委托?事件跟委托是什么关系?
委托是一个类,它定义了方法的类型,使得方法可以当做另一个方法的参数来传递
事件也是一种委托