Servlet-4
来源:互联网 发布:贵州广电网络公司地址 编辑:程序博客网 时间:2024/06/05 14:24
对于相对路径和绝对路径的使用案例
当前页面:/EmpManger/findEmp
通过点击”增加”按钮,希望跳转到/EmpManager/add_emp.html(则作为目标页面)
则”增加”按钮写的事件为 onclick=”location.href=’add_emp.html’” 使用相对路径
重定向
重定向背景:解决2个网站之间的跳转问题。‘ 重定向扩增:一个项目内,2个彼此独立(不依赖)的组件之间使用重定向 一般情况下: 1.删除后重定向到查询 2.增加,修改后重定向到查询
路径
Servlet访问路径
Servlet的生命周期
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <!-Servlet的初始化参数如何设置--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:conf/spring-*.xml</param-value> </init-param> <!--在启动tomcat时加载(创建及初始化)此Servlet,中间的数字代表加载Servlet的顺序--> <load-on-startup>1</load-on-startup> </servlet>
如何读取Servlet的初始化参数?
String ServletConfig.getInitParameter(“company”);
1.有时候需要给Servlet预置一些参数,如每页显示条目数(size). 2.可以自己写配置文件(properties/xml),自己写工具读取; 3.也可以使用ServletConfig和ServletContext,他们都能够自动获取web.xml中预置的参数,传给Servlet
<servlet> <servlet-name>text</servlet-name> <servlet-class> web.logServlet </servlet-class> <init-param> <param-name>maxOnline</param-name> <param-value>20000</param-value> </init-param> <load-on-startup>1</load-on-startup> <servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!--此桉树可以被多个Servlet共用。在tomcat启动时,它会自动创建ServletContext对象,并且调用该对象的方法自动读取此参数.--> <context-param> <param-name>size</param-name> <param-value>10</param-value> </context-param>
public class test extends HttpServlet { @Override public void init(ServletConfig config) throws ServletException { super.init(config); System.out.println(config.getInitParameter("maxOnline")); } @Override protected void service( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { ServletConfig config=getServletConfig(); System.out.println(config.getInitParameter("maxOnline")); System.out.println("这里进行登录"); //使用context获取web.xml中预置的参数 //该对象中的数据可以被所有的Servlet共用 ServletContext ctx=getServletContext(); System.out.println(ctx.getInitParameter("size")); } }
context的特殊用法:
1.可以在程序运行期间读写变量;
2.由于context是共用的对象,因此存入其内的变量是多个Servlet间共有的;
/** * 该Servlet不是用来处理请求的,仅仅是 * 用来在启动tomcat时初始化项目中所需的 * 一些参数,因此只有init()。 */ public class InitServlet extends HttpServlet { @Override public void init(ServletConfig config) throws ServletException { super.init(config); //初始化流量参数count,默认为0。 //当用户访问任意Servlet时才累加count。 //该参数是共用的,存入context。 ServletContext ctx = getServletContext(); ctx.setAttribute("count", 0); } }
public class FindEmpServlet extends HttpServlet { @Override protected void service( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { //在tomcat启动时会自动创建context。 //并且只在此时创建一次,因此它是单例的。 ServletContext ctx = getServletContext(); String size = ctx.getInitParameter("size"); System.out.println(size); //访问时将流量+1 Integer count = (Integer) ctx.getAttribute("count"); count++; ctx.setAttribute("count", count); System.out.println("当前流量"+count); } }
Servlet线程安全问题:
1.局部变量存入栈内; 2.每个线程有不同的栈帧; 3.不同的线程数据时分开的。无线程安全问题; 1.成员变量存入堆中。 2.堆中该数据只有一份。 3.不同线程同时修改这一份数据有线程安全问题; 解决方案: 1.不用成员变量; 2.加锁;
//成员变量 double sal=100.0; @Override protected void service( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { synchronized(this){ //加薪 sal+=100.0; //假设网络延迟 8s try{ Thread.sleep(8000); }catch(InterruptedException e){ e.printStackTrace(); } //输出给浏览器 res.setContentType("text/html;charset=utf-8"); PrintWriter out=res.getWriter(); out.println("<p>工资:"+sal+"</p>"); out.close(); }
0 0
- Servlet(4)
- servlet(4)
- Servlet 4
- Servlet<4>
- Servlet-4
- Servlet/JSP学习笔记(4)-Servlet入门
- Servlet/JSP学习笔记(4)-Servlet入门
- java servlet帮助4
- Servlet 4 过滤器
- servlet 与缓存(4)
- servlet开发4-HttpServlet
- servlet-4 状态码
- Servlet应用程序(4)----数据库
- Servlet基础(4)
- jsp+servlet(4)
- Servlet
- servlet
- Servlet
- 【设计模式】策略模式
- 什么是IaaS, PaaS和SaaS及其区别
- mybatis的特殊情景语句操作
- 实现一个栈, 其 Push,Pop,Min 操作的 时间复杂度 均为 O( 1 )
- Spring mvc interceptor配置拦截器
- Servlet-4
- 弄不明白抽象类和接口就回头看看
- Netty精粹之轻量级内存池技术实现原理与应用
- 文件备份替换更新批处理
- [opencv编程]244版本跑231版本出错——fatal error LNK1104: 无法打开文件“opencv_core231d.lib”
- Gradle签名打包
- Ijkplayer Android介绍
- greendao3.2简单配置
- 51NOD 1605 棋盘问题 博弈