1.servlet 原理:
1.1-servlet 设置数据:setAttribute()
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("Hello,Ming!"); ServletContext context = this.getServletContext(); String username="Mingyue"; context.setAttribute("username",username); }
1.2-servlet 读取数据:getAttribute()
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context = this.getServletContext(); String username = (String) context.getAttribute("username"); resp.getWriter().print("Name = " + username); }
1.3-设置mapping:先访问/hello路径,读取setAttribute,然后再访问/getc路径,读取getAttribute。否则直接访问后者读取不到数据。
1 <servlet> 2 <servlet-name>hello</servlet-name> 3 <servlet-class>com.ming.servlet.HelloServlet</servlet-class> 4 </servlet> 5 <servlet-mapping> 6 <servlet-name>hello</servlet-name> 7 <url-pattern>/hello</url-pattern> 8 </servlet-mapping> 9 10 <servlet> 11 <servlet-name>getc</servlet-name> 12 <servlet-class>com.ming.servlet.GetServlet</servlet-class> 13 </servlet> 14 <servlet-mapping> 15 <servlet-name>getc</servlet-name> 16 <url-pattern>/getc</url-pattern> 17 </servlet-mapping>
mapping 注意事项:先读取/hello路径,错误,则直接/*路径,进入error页面。
1 <servlet> 2 <servlet-name>hello</servlet-name> 3 <servlet-class>com.ming.servlet.HelloServlet</servlet-class> 4 </servlet> 5 <servlet-mapping> 6 <servlet-name>hello</servlet-name> 7 <url-pattern>/hello</url-pattern> 8 </servlet-mapping> 9 10 <servlet> 11 <servlet-name>error</servlet-name> 12 <servlet-class>com.ming.servlet.ErrorServlet</servlet-class> 13 </servlet> 14 <servlet-mapping> 15 <servlet-name>error</servlet-name> 16 <url-pattern>/*</url-pattern> 17 </servlet-mapping>
2.servletContext
2.1-get parameter from xml. First, set parameters in xml and map servlet.
1 <context-param> 2 <param-name>url</param-name> 3 <param-value>jdbc:mysql://localhost:3306/mybatis</param-value> 4 </context-param> 5 6 <servlet> 7 <servlet-name>gp</servlet-name> 8 <servlet-class>com.ming.servlet.ServletDemo03</servlet-class> 9 </servlet> 10 <servlet-mapping> 11 <servlet-name>gp</servlet-name> 12 <url-pattern>/gp</url-pattern> 13 </servlet-mapping>
get parameters by doGet(). getServletContext->getInitParameter, and print to browser.
1 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 2 ServletContext context = this.getServletContext(); 3 String url = context.getInitParameter("url"); 4 resp.getWriter().print(url); 5 }
2.2-forword page by requestDispatcher() and forword(). there will get into /gp page not /sd4 page. url:http://localhost:8080/servlet_02_war/sd4
1 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 2 ServletContext context = this.getServletContext(); 3 System.out.println("get into Servlet04"); 4 // RequestDispatcher requestDispatcher = context.getRequestDispatcher("/gp"); 5 // requestDispatcher.forward(req,resp); 6 context.getRequestDispatcher("/gp").forward(req,resp); 7 }
map the servlet in xml.
1 <servlet> 2 <servlet-name>sd4</servlet-name> 3 <servlet-class>com.ming.servlet.ServletDemo04</servlet-class> 4 </servlet> 5 <servlet-mapping> 6 <servlet-name>sd4</servlet-name> 7 <url-pattern>/sd4</url-pattern> 8 </servlet-mapping>
2.2.1-the difference between forword and redirect:
forword: A --> B --> C C --> B --> A
redirect: A -->B B --> A A-->C
2.3-servlet read properties, created a properties at resources folder(normally), the path was in target folder: "WEB-INF/classes/db.properties"
1 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 2 InputStream inputStream = this.getServletContext().getResourceAsStream("WEB-INF/classes/db.properties"); 3 Properties properties = new Properties(); 4 properties.load(inputStream); 5 String username = properties.getProperty("username"); 6 String password = properties.getProperty("password"); 7 resp.getWriter().print(username+" : "+ password); 8 }
db.properties.
username=ming
password=123456
map servlet in xml.
<servlet> <servlet-name>sd5</servlet-name> <servlet-class>com.ming.servlet.ServletDemo05</servlet-class> </servlet> <servlet-mapping> <servlet-name>sd5</servlet-name> <url-pattern>/sd5</url-pattern> </servlet-mapping>
- servlet_mapping servletContext servlet mappingservlet_mapping servletcontext servlet mapping servlet_mapping servletcontext对象servlet p7 servletcontext servletcontext对象10 servletcontext对象 httpservletrequest servletcontext httpsession servletcontext常用 方法 数据 genericservlet servletcontext servletconfig 路径servletcontext全局 常用