首先把文件放出来给大家看一下,需要用到哪些东西




代码实例:
LoginForm:
package com.zking.form;
public class LoginForm extends TotalForm{
private String uname;
private String upass;
public LoginForm() {
super();
}
public LoginForm(String uname, String upass) {
super();
this.uname = uname;
this.upass = upass;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
@Override
public String toString() {
return "LoginForm [uname=" + uname + ", upass=" + upass + "]";
}
}
TotalForm里面不用写代码,作为一个父类让别人继承就好了
TotalServlet:
package com.zking.servlet;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Enumeration;
import java.util.Properties;
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.zking.form.LoginForm;
import com.zking.form.TotalForm;
import com.zking.servletdo.Jump;
import com.zking.servletdo.TotalDo;
public class TotalServlet extends HttpServlet{
@Override
public void init(ServletConfig config) throws ServletException {
try {
Properties properties=new Properties();
Properties propertiesObject=new Properties();
String serverPath=config.getServletContext().getRealPath("/");
FileInputStream fis=new FileInputStream(serverPath+"WEB-INF/config.properties");
properties.load(fis);
config.getServletContext().setAttribute("config", properties);
config.getServletContext().setAttribute("object", propertiesObject);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
//1.获取路径
String uri=req.getRequestURI();
//2.截取
uri=uri.substring(uri.lastIndexOf("/")+1, uri.lastIndexOf("."));
//3.获取
Properties properties=(Properties) req.getSession().getServletContext().getAttribute("config");
Properties propertiesObject=(Properties) req.getSession().getServletContext().getAttribute("object");
String className=properties.getProperty(uri);
//4.实例化对象
TotalDo totalDo=(TotalDo) propertiesObject.get(className);
if(totalDo==null){
totalDo=(TotalDo) Class.forName(className).newInstance();
propertiesObject.put(className, totalDo);
}
//获取表单的值,给了LoginForm
//获取表单上所有的参数名
String formUri=uri+"Form";
String classNameForm=properties.getProperty(formUri);
Class clazzForm=Class.forName(classNameForm);
TotalForm totalForm=(TotalForm)clazzForm.newInstance();
Enumeration enumeration=req.getParameterNames();
while(enumeration.hasMoreElements()){
String paramName=(String) enumeration.nextElement();
String paramValue=req.getParameter(paramName);
//利用反射技术 获取 LoginForm中所有的set方法
//拼接方法名
String menthodName="set"+paramName.substring(0,1).toUpperCase()+paramName.substring(1);
Method method=clazzForm.getDeclaredMethod(menthodName, String.class);
method.setAccessible(true);
//执行方法
method.invoke(totalForm, paramValue);
}
Jump jump=totalDo.execute(totalForm);
jump.jumpPage(req,resp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
jump:
package com.zking.servletdo;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Jump {
private String url;//跳转到哪里去
private boolean b;//是否为重定向
public Jump(String url, boolean b) {
super();
this.url = url;
this.b = b;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public boolean isB() {
return b;
}
public void setB(boolean b) {
this.b = b;
}
public Jump() {
super();
}
public void jumpPage(HttpServletRequest req,HttpServletResponse resp){
try {
if(b){
//重定向
resp.sendRedirect(url);
}else{
//转发
req.getRequestDispatcher(url).forward(req, resp);
}
} catch (IOException e) {
e.printStackTrace();
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
LoginDao:
package com.zking.servletdo;
import com.zking.form.LoginForm;
import com.zking.form.TotalForm;
public class LoginDo implements TotalDo {
public Jump execute(TotalForm totalForm) {
LoginForm loginForm=(LoginForm) totalForm;
System.out.println(loginForm.toString());
System.out.println("执行登录的业务逻辑");
return new Jump("index.jsp",true);
}
}
TotalDo:
package com.zking.servletdo;
import com.zking.form.TotalForm;
public interface TotalDo {
public Jump execute(TotalForm totalForm);
}
本文介绍了一个基于Java的登录表单处理系统,包括LoginForm类的设计、TotalServlet的配置及请求处理流程、Jump类的页面跳转逻辑以及LoginDo的具体业务实现。
3552

被折叠的 条评论
为什么被折叠?



