由Servlet到Struts(一)——之Servlet

来源:互联网 发布:网络运维投标书 编辑:程序博客网 时间:2024/05/01 17:38
举一个简单的servlet的例子:比如查询用户。

(1)在页面输入用户名,点击查询按钮(<input type="submit" value="提交">)进行提交。

<form action="servlet/queryUser.action" method="post">

(2)根据配置文件web.xml。

  <servlet>  <servlet-name>TestServlet</servlet-name>  <servlet-class>com.ys.servlet.TestServlet</servlet-class>  </servlet>  <servlet-mapping>  <servlet-name>TestServlet</servlet-name>  <url-pattern>*.action</url-pattern>  </servlet-mapping>

(3)执行TestServlet.java

public class TestServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String requestURI = request.getRequestURI();String path = requestURI.substring(requestURI.indexOf("/", 1), requestURI.indexOf("."));Action action = null;if ("/servlet/addUser".equals(path)) {action = new AddUserAction();}else if ("/servlet/delUser".equals(path)) {action = new DelUserAction();}else if ("/servlet/modifyUser".equals(path)) {action = new ModifyUserAction();}else if ("/servlet/queryUser".equals(path)) {action = new QueryUserAction();}else {throw new RuntimeException("请求失败!");}String forward = null;try {forward = action.execute(request, response);} catch (Exception e) {e.printStackTrace();}request.getRequestDispatcher(forward).forward(request, response);}}

在TestServlet中截取URL、根据URL分发到相应的Action,如(Action action = new QueryUserAction())。

(4)执行QueryUserAction.java

public class QueryUserAction implements Action {@Overridepublic String execute(HttpServletRequest request,HttpServletResponse response) throws Exception {String userName = request.getParameter("userName");//其他查询条件......//调用业务逻辑UserManager userManager = new UserManager();List userList = userManager.query(userName);request.setAttribute("userList", userList);return "/query_success.jsp";//转向路径可以通过配置文件读取}}

(5)转向到相应的视图页面,渲染页面,进行显示。

<body>查询成功!<p><%=request.getAttribute("userList") %></body>

用时序图分析整个流程如下:

原创粉丝点击