以前的一些内容,写在机器上。呵呵。现在都帖上来吧。
第一:讲XML里面所有提交的servlet 改成 *.do 提交到 ActionServlet
然后在action里面 截取最后的 值
String uri = arg0.getRequestURI();得到uri
然后截取最后的’/’和’.’得到 UserADD
然后使用
String name = uri.substring(‘/+1’,’.’);
然后使用class.forname().newInstance();来得到新的实列
然后将Action定义一个接口让所有的增删查改都实现action类
实现方法。返回一个String类型 的返回值
String forward = “error.jsp”
Action action = (Acction)Class.forName(clzName).newInstance();
Forward = action.process(arg0,arg1);
转向
requestDispatcher rs = arg0.getrequestDispathcer(forward);
rs.forward(arg0,arg1);
写一个配置文件 将 里面的 key=value 包名和类名写进去
然后用properties 属性文件 然后使用 enumeration 枚举便利
String path = this.getServletContext().getRealPath("/");
得到路劲
C请求
Servlet1
Servlet2
Servlet3
V
*.jsp
数据库
M
Dao
Dto
MVC 1.0
因为这里是我画的图这不好显示。。就。。。。。算了
这里是word画的图~~~~没能正常显示
C请求
Servlet1
*.do
V
*.jsp
数据库
M
Dao
Dto
Action 1 list action2 add ……….
MVC2.0
这里是word画的图~~~~没能正常显示
MVC1.0 – MVC2.0
1. 在web.xml中只留一组servlet 将所有对servlet的请求转向一个servlet actionservet
2. 在actionservet.java中 用 substring() 截取 ~.do 将 .也取 列 ~~~/booklis.do,截取”/”和”.” 然后使用substring(“/+1”,”.”)获得
3. 实现新的action 接口 和对象 使用
Action action = (Acction)Class.forName(clzName).newInstance();
4. 然后使用得到return返回的字符串转向
5. 创建相应的类的是实列实现action类~~具体看代码~~
6. 启动服务器时。因为还没有request和session则需要获得当前目录,应该怎么获得呢。这里使用String path = this.getservletContext().getrealPath(“/”);
7. InputStream in = new FileinputStream(path+”web-inf/+文件夹*.properties”);得到配置文件的key与value放在hashmap中
Web.xml中应该 如下配置
<servlet>
<init-param>
<param-name>DriverName</param-name>
<param-value>oracle.jdbc.driver.OracleDriver</param-value>
</init-param>
<init-param>
<param-name>URL</param-name>
<param-value>jdbc:oracle:thin:@localhost:1521:orcl</param-value>
</init-param>
<init-param>
<param-name>User</param-name>
<param-value>LIUBOWEN</param-value>
</init-param>
<init-param>
<param-name>Password</param-name>
<param-value>liubowen</param-value>
</init-param>
<servlet-name>ActionServlet</servlet-name>
<servlet-class>
com.softeem.mvc.action.ActionServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ActionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
代码具体如下给大家<简单的使用hasmap实现。还等升级使用配置文件>接口等代码自己写了。
有问题~继续
package com.softeem.action;
import java.io.IOException;
import java.util.HashMap;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.softeem.config.ConfigSource;
public class ActionServlet extends HttpServlet {
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGetdoPost(arg0, arg1);
}
@Override
protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
doGetdoPost(arg0, arg1);
}
protected void doGetdoPost(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
String uri = arg0.getRequestURI();//截取浏览器路径
int post = uri.lastIndexOf("/");
int last = uri.lastIndexOf(".");
String name = uri.substring(post + 1, last);
String clek = (String) ConfigSource.getmap().get(name);
String fowad = "login.jsp";
if (clek == null) {
clek = "com.softeem.implen.action.Erroraction";
}
try {
Action action = (Action) Class.forName(clek).newInstance();
fowad = action.doPostdoGet(arg0, arg1);
RequestDispatcher rs = arg0.getRequestDispatcher(fowad);
rs.forward(arg0, arg1);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void init() throws ServletException {
ConfigSource.init(this);
}
标签:java软件工程师培训 软件编程培训 如何学习java 广州java培训 java精品课程 软件工程课程