不要过早接触框架,框架无非就是servlet和filter的产物(我的理解)
那就先从servlet和filter做起吧
servlet在前几篇我已经提过了
这里就大概提一下filter等其他的
定义filter类
内容如下
package demo;
import java.io.IOException;
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 HelloFilter implements Filter {
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("Filter 初始化");
}
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
System.out.println("拦截 URI="+request.getRequestURI());
chain.doFilter(req, res);
}
@Override
public void destroy() {
System.out.println("Filter 结束");
}
}
在web.xml中配置,这里要放在servlet配置前边
<filter>
<filter-name>helloFilter</filter-name>
<filter-class>demo.HelloFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>helloFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
和servlet太类似了是不是(不过servlet继承,filter实现接口)
先filter在servlet
HttpServletRequest和HttpServletResponse两个接口最重要
请求 响应
Session
HTTP协议里没有关于Session回话的定义,Session是各种编程语言根据HTTP协议的无状态这种特点而产生的。其实无非就是服务器的一个哈希表,
哈希表的key就是传递给浏览器的名为jsessionid的cookie值
当需要将某个值保存到session中,容器会执行如下几步
1.获取jsessionid值,没有的话就生成一个,也就是request.getSession()这个方法
2.拿到HttpSession对象实例就相当于一个哈希表,你可以王哈希表里存放数据(setAttribute)
3.你也可以通过getAttribute来获取某个值
jsessionid的cookie在浏览器关闭时会自动删除。Cookie的MaxAge设置为-1就能达到效果。
这里很重要,某些面试就喜欢问(买了个表,这有什么好问的)(这也说明了session只存在与服务器端,cookie存在客户端)
关于jsp
jsp页面执行时都会编译一个servlet类文件,你可以看看(/work)会自动生成一个.java文件和一个编译后的.class文件
jsp适合做视图
servlet适合做控制层
具体代码我会打包发上去有需要下载
云盘代码包