1. IDEA新建一个web application
2. 写一个继承HttpServlet的类,其中可以重写 init,doGet,doPost,destroy等等方法。见明知意。常见的HTTP请求类型都是可以do的。
(以下所有的HTTP请求类型我称为do方法。这样感觉还挺像rest风格的)
3. web.xml配置servlet的名称,类路径,mapping,还是贴个简易的代码吧
<servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/index</url-pattern> </servlet-mapping>
这里是给HelloServlet配了两个路径,多路径就是这样一个一个加上的。
4. 运气好的话现在在Application Servers面板就可以启服务打开页面了。运气不好就是没配好IDEA,重新配。
5. do方法内可以通过 HttpServletRequest#getWriter 方法获取一个 PrintWriter 对象,用这个对象向页面输出内容。
6. do方法可以用两种方式返回一个jsp页面。
- 使用重定向方式。
response.sendRedirect("/views/xxx.jsp") //views是一个文件夹,放到web文件夹里面就行。
这种方式浏览器的地址栏url会变的,不好看(个人感觉)。
重定向通过session向jsp传递数据。
HttpSession session = req.getSession(); String queryString = req.getQueryString(); System.out.println(queryString); session.setAttribute("message", queryString); resp.sendRedirect("/views/xxx.jsp");
jsp页面使用 <% out.println(session.getAttribute("message"));%> 获取并打印session全局对象里的值。
2. forward方式
forward方式浏览器地址栏不会改变
可以使用session,req.setAttribute 传值。
RequestDispatcher dispatcher = req.getRequestDispatcher("/views/login2.jsp"); req.setAttribute("message", "duanyu hello"); dispatcher.forward(req, resp);
jsp页面使用 <% out.println(request.getAttribute("message"));%> 获取并打印request全局对象里的值。