1.login.jsp
<form action="login.do">
用户名:<input type="text" name="userName"><br>
密码:<input type="text" name="password"><br>
<input type="submit" value="提交">
2.定义接口Action
package com.wjj.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface Action {
public String execute(HttpServletRequest request,HttpServletResponse response);
}
3.定义LoginAction类并实现上面所定义的接口
package com.wjj.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.wjj.controller.Action;
public class LoginAction implements Action {
@Override
public String execute(HttpServletRequest request,
HttpServletResponse response) {
System.out.println(request.getParameter("userName"));
return "success.jsp";
}
}
4.新建ActionServlet
package com.wjj.controller;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.wjj.action.LoginAction;
/**
* Servlet implementation class ActionServlet
*/
public class ActionServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
//新建一个Map,用于使用键值对
// Map actionMap =new HashMap();
//第二种方式定义bean工厂类对象
BeanFactory bf;
/**
* @see HttpServlet#HttpServlet()
*/
public ActionServlet() {
super();
}
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
//在初始化时,设置键值对
//actionMap.put("login", new LoginAction());
//第二种方式初始化时,读取配置文件
bf =new BeanFactory("E://bean.xml");
}
/**
* @see Servlet#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path =request.getServletPath();// 获取路径 /login.do
System.out.println(path);
String actionName =path.substring(path.indexOf("/")+1, path.length()-3); // 截取路径
System.out.println(actionName);
//Action action =(Action)actionMap.get(actionName);//实现多态
//第二种方式使用反射类的方式
Action action =(Action)bf.getBean(actionName);
String result =action.execute(request, response);
request.getRequestDispatcher(result).forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
5.web.xml中
<servlet>
<description></description>
<display-name>ActionServlet</display-name>
<servlet-name>ActionServlet</servlet-name>
<servlet-class>com.wjj.controller.ActionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ActionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
6.工厂类factoryBean
package com.wjj.factory;
import java.io.FileInputStream;
import java.util.Properties;
public class BeanFactory {
//properties是map的子类
private Properties pros = new Properties();
public BeanFactory(String fileName) {
//通过路径fileName扫描资源文件
FileInputStream fis;
try {
fis = new FileInputStream(fileName);
pros.load(fis);
} catch (Exception e) {
e.printStackTrace();
}
}
public Object getBean(String beanName) {
String className = pros.getProperty(beanName);
Object obj = null;
//Class实例用于到文件扫描,将信息装载到该实例中
Class clazz;
try {
//找到并返回一个类存储在类型为Class的类里
clazz = Class.forName(className);//查找到资源文件中的"com.wjj.action.LoginAction"
obj = clazz.newInstance();//实例化该类"com.wjj.action.LoginAction"
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
}
相关推荐
但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。 基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件 8. ...
124 8.5.2 拦截器的实现原理 124 8.5.3 Struts2的内置拦截器 124 8.5.4 拦截器的配置和使用 125 8.5.5 自定义拦截器 126 8.6 一个简单的Struts2应用 130 8.7 小结 140 第9章 JSF 141 9.1 JSF技术简介 141 9.1.1 JSF...
大量的应用到了类的反射机制涉及网络编程行业最高精尖技术STRUTS+HIBERNATER,最有说 服力的证实了多层建构框架模式的绝优越性。数据和逻辑处理由STRUTS的模型层Model进行处理, 页面调转由STRUTS的控制层Controller...
大量的应用到了类的反射机制涉及网络编程行业最高精尖技术STRUTS+HIBERNATER,最有说 服力的证实了多层建构框架模式的绝优越性。数据和逻辑处理由STRUTS的模型层Model进行处理, 页面调转由STRUTS的控制层Controller...
*第十三阶段:轻量级框架,三大框架之一Struts框架的学习,自此踏入java web开发的精华部分,包括Struts体系架构,各种组件,标签库和扩展性的学习; *第十四阶段:Hibernate框架学习,三大框架之一,包括检索...
在整个后台管理系统中,商品管理是一个重要的管理模块,是整个平台的核心管理模块,具有很强的商品控制和管理功能,一定要熟练操作。 1.商品维护 点击“商品维护”,会进入“商品列表”页面,该页面分搜索栏和列表...
本系统包含N多个JavaBean类,整个系统全面实现MVC(模型 视图 控制)三层架构,大量的应用到了类的反射机制涉及STRUTS+HIBERNATER高级编成技术,体现了多层建构框架模式的绝优越性。 数据和逻辑处理由STRUTS的...
3. 开班一个半月内,贯穿 JavaSE及数据库的学习将完成 T-DMS 数据 采集系统项目 • 整个系统由 DMS 采集端、DMS 服务器端和 NetCTOSS 服务器端三部分组成。 • DMS 采集端的主要任务是采集、解析、匹配和保存并发送...
134.mybatis 如何编写一个自定义插件? 十四、RabbitMQ 135.rabbitmq 的使用场景有哪些? 136.rabbitmq 有哪些重要的角色? 137.rabbitmq 有哪些重要的组件? 138.rabbitmq 中 vhost 的作用是什么? 139.rabbitmq 的...
大量的应用到了类的反射机制涉及网络编程行业最高精尖技术STRUTS+HIBERNATER,最有说 服力的证实了多层建构框架模式的绝优越性。数据和逻辑处理由STRUTS的模型层Model进行处理, 页面调转由STRUTS的控制层Controller...
\contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...