1、定义接口
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface Action {
public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception;
}
2、定义ActionServlet类
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ActionServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String resultView = null;
Action action = this.getAction(request);
try {
resultView = action.execute(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(resultView != null){
request.getRequestDispatcher(resultView).forward(request, response);
}
}
private Action getAction(HttpServletRequest request) {
//例如:http://localhost:8080/MVC/add.action
//获取请求的URL
String uri = request.getRequestURI();
//获取上下文路径
String contextPath = request.getContextPath();
//获取上下文以后的部分
String actionPath = uri.substring(contextPath.length());
//获取Action名称
String actionName = actionPath.substring(1,https://www.doczj.com/doc/7a12373657.html,stIndexOf('.')).trim();
Action action = null;
if("add".equals(actionName)){
action = new AddAction();
}
return action;
}
}
3、定义接口Action的实现类
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import https://www.doczj.com/doc/7a12373657.html,puter;
public class AddAction implements Action {
public String execute(HttpServletRequest request,
HttpServletResponse response) throws Exception {
//获得表单提交的值
double first = Double.parseDouble(request.getParameter("first"));
double second = Double.parseDouble(request.getParameter("second"));
//业务处理
Computer computer = new Computer();
double result = computer.add(first, second);
request.getSession().setAttribute("result_add", result);
return "/result.jsp";
}
}
4、定义业务类
public class Computer {
public double add(double a, double b){
return a + b;
}
public double sub(double a, double b){
return a - b;
}
public double multi(double a, double b){
return a * b;
}
public double div(double a, double b){
return a / b;
}
}
5、编写视图部分
在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(统一资源定位符),它是WWW的统一资源定位标志,就是指网络地址。 URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。也可认为由4部分组成:协议、主机、端口、路径 URL的一般语法格式为:(带方括号[]的为可选项): protocol :// hostname[:port] / path / [;parameters][?query]#fragment 扩展资料
URL的一般语法只是为使用协议来建立新方案提供了一个框架,当然除了已经在这篇文档中定义过的。 URL通过提供资源位置的一种抽象标志符来对资源进行定位。系统定位了一个资源后,可能会对它进行各种各样的操作,这些操作可以抽象为下面的几个词:访问,更新,替换,发现属性。一般来说,只有访问方法这一项在任何URL方案中都需要进行描述。 URL是由一串字符组成,这些字符可以是字母,数字和特殊符号。一个URL可以用多种方法来表现,例如:纸上的字迹,或者是用字符集编码的八位字节序列。 URL的解释仅取决于所用字符的特性。在大多数URL方案中,都是使用URL不同部分的字符序列来代表因特网协议中所使用的八位字节序列。 url(uniform resoure locator:统一资源定位器)是www页的地址,它从左到右由下述部分组成: ·internet资源类型(scheme):指出www客户程序用来操作的工具。如“http://”表示www服务器,“ftp://”表示ftp服务器,“gopher://”表示gopher服务器,而“new:”表示newgroup 新闻组。
URL的概念 URL(Universal Resource Locator)是“统一资源定位地址”的英文缩写。每个站点及 站点上的每个网页都有一个惟一的地址,这个地址称为统一资源定位地址,向浏览器翰入UR工,可以访问URL指山的web网页,制作网贞中的超文本时也要用到URL 在了解URL的结构前,我们先看一个案例 从这个例子,可以以看到URL的基本结构为: 通信协议://服务器名称【:通信端口编号】/文件夹1【/文件夹2】/文件名 各部分的含义如下。 〔1)通信协议 通信协议是URL所连接的网络服务性质,如HTTP代表超文本传愉协议,FTP代表文件传输协议等,其他所便用的协议见表I一I所示。 〔z)服务器名称 服务器名称是提供服务的主机名称。冒号后面的数字是通信端口编号,可有可无,这个编号用来告诉HTTP服务器的TCP/IP软件去打开哪一个通信端口,因为一台计算机常常会同时作为Web、FTP等服务器.为便于区别.每种服务器要对应一个通信端口。 〔3)文件夹与文件名 文件夹是放文件的地方,如果是多级文件目录,必须指定是第一级文件夹还是第二级、第三级文件夹,直到找到文件所在位置。文件是指包括文件名与扩展名在内的完整名称。 在理解了URL的概念后,下面则介绍绝对URL与相对URL的概念。这两个概念很重要.要正确理解和使用绝对URL与相对URL。绝对URL是指INTERNET网址的完整定位,如https://www.doczj.com/doc/7a12373657.html,/article/20110914104939.html就是一个完整的绝对URL形式,它包含协议种类.服务指域名、文件路径和文件名。相对URL是指Internet上资源相对于当前页 面的地址,它包含从当前指向日的页面位置的路径.如news/news-1.html就是一个相对URL. 表示的是当前页面所在目录下news子目录巾的news-l.html文件。 绝对URL与相对URL各有用处,绝对URL书写起来很麻烦.但可以保证路径的唯一
在页面删除或一个查询等都会传递一个参数比如: From表单提交的 Function getId(){ url=”select.jsp?id=2”; $(“#aa”).attr(“action”,url); $(“#aa”).submit; }
在查询单个完成是在地址栏中会有id=2的查询参数 在这里我们要去掉这个参数并且后台能获取的到这个参数, 这里用的是js Function getId(){ url=”select.jsp”; $().attr(“bb”,2);//ID的值赋给隐藏域 $(“#aa”).attr(“action”,url); $(“#aa”).submit; } 这样就可以在后台直接获取隐藏域的值: String itemId = request.getParameter("bb"); 你也可以把from提出来 查询 如果你是ID是从后台获取到的也可以这样(data表示从后台获取是值)Function getId(data){ url=”select.jsp”; $().attr(“bb”,data);//ID的值赋给隐藏域 $(“#aa”).attr(“action”,url); $(“#aa”).submit; }