web基础知识笔记


部署一个web项目必须的文件夹
webapps 下面是工程文件夹 例如hello
工程文件夹下面 是WEB-INF文件夹 和html文件
WEB-INF 下面必须的文件 文件夹 class文件夹 程序文件  lib 库文件 web.xml
启动tomcat 访问


tomcat虚拟路径发布
tomcat confg文件夹 server.xml


     //如果发布多个项目 可以 添加host文件  
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

       <Host/>

tomcat web.xml listing 设置true 显示 webapps 显示文件夹结构

servlet 生命周期:

servlet运行过程
首先 浏览器发送请求
服务器接收请求 在web.xml 通过请求路径 找到servletname 
通过servlet-name 找到 servlet-class
创建servlet
调用init方法 init重载方法 init(servletConfig config)  config.getInitParams("") web.xml 配置初始化的参数
-调用service方法 service 被覆盖就不会调用doget doPost方法
调用doxx方法
最后调用destroy方法

web.xml load-on-startup 不为0 或者为空  表示启动的时候执行servlet


字符编码
html 文件里utf-8
tomcat config/server.xml<Connector URIEncoding="UTF-8"/>(get请求获取数据时候的乱码问题)
servlet获取值之前 request.setCharacterEncoding("UTF-8")(post 请求乱码问题解决)







  <% String str = "hello";
     out.println(str+"
"
); %> <%= str%> out代替写法 jsp 文件会被tomcat 转换为servlet 在tomcat目录work目录生成java文件 jsp 和java代码的对象交互 可以import 导入对象的包 jsp 重定向 response.sendRedirct("页面路径") 对于response跳转之后 依然会执行剩下的代码 跳转之后应该retrun(浏览器地址会变化的) 客户端的跳转 服务器端跳转:<jsp:forward page="03.jsp"> <jsp:value:="gac" name="user"/> </jsp> 服务器端跳转(浏览器地址没有变化) 跳转最后不要传中文 访问一个页面可已使用相对路径和绝对路径 相当路径是针对当前页面的路径 页面中一般都会使用绝对路径去做,req.getContextPath();//获取上下文路径 静态包含 动态包含 (动态包含)<%@include file="/inc/top.jsp"%> 使用包含时候如果使用绝对路径 不用增加上下文路径,会默认自己增加上下文路径 不进行任何编译直接导入,在导入的文件中进行编译 (静态包含)<jsp:include page="/inc/top.jsp"></jsp:include> 静态包含 导入的文件会先被编译成html文件才会导入 一般开发中使用静态编译,动态包含 容易出现重复定义变量 页面直接传递对象 request.setAttribute(String,Object) request.getAttribute(String name) jsp和servlet可以可以传递内置对象Atrribute有 pageContext(Servlet 里没有) request(HttpRequest) session(HttpSession) .application(ServletContext) pageContext(当前页面存在,当发生跳转之后数据丢失) request 客户端跳转当前页面存在,发生跳转数据丢失 服务端跳转数据存在 session 客户端跳转数据存在 服务器端跳转数据存在 浏览器关闭 session 才会丢失 application 重启服务器才会丢失数据 使用原则:可以使用pageContext 可以用request 不用session 能用session 不用application filter 解决字符编码 和权限控制 //解决post传递数据 字符编码 问题 public class CharEncodingFilter implements Filter { String encoding; @Override public void init(FilterConfig filterConfig) throws ServletException { encoding = filterConfig.getInitParameter("encoding");//filter 也可以像servlet一样设置初始化参数 } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("before fileter"); servletRequest.setCharacterEncoding(encoding); filterChain.doFilter(servletRequest,servletResponse);//如果不写 request response不会继续传递 System.out.println("end filter"); } @Override public void destroy() { } }
el 表达式 ${username} 默认会先在pageContext中找username,如果没有
就会去request中去找,如果没有则会去session中寻找username,session 中没有就会去application中去找

你可能感兴趣的:(jsp和servlet)