表单后台验证;
package cn.kgli.utils;
import java.util.Enumeration; import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.beanutils.BeanUtils;
public cla WebUtils {
//把request对象中的请求参数封装到bean中
public static T request2Bean(HttpServletRequest request,Cla clazz){
try{
T bean = clazz.newInstance();
//username=aa paword=bb email=aa@sina.com
Enumeration e = request.getParameterNames();
while(e.hasMoreElements()){
String name = (String) e.nextElement(); //username=aaa paword=123
String value = request.getParameter(name);
BeanUtils.setProperty(bean, name, value);
}
return bean;
}catch (Exception e) {
throw new RuntimeException(e);
}
}
public static String makeId(){
//UUID
128 36位字符
return UUID.randomUUID().toString(); }
}
package cn.itcast.web.formbean;
import java.util.HashMap; import java.util.Map;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
public cla RegisterFormBean {
private String username; private String paword; private String paword2; private String email; private String birthday;
private Map errors = new HashMap();
public Map getErrors() {
return errors; } public void setErrors(Map errors) {
this.errors = errors; } public String getUsername() {
return username; } public void setUsername(String username) {
this.username = username; } public String getPaword() {
return paword; } public void setPaword(String paword) {
this.paword = paword; } public String getPaword2() {
return paword2; } public void setPaword2(String paword2) {
this.paword2 = paword2; } public String getEmail() {
return email; } public void setEmail(String email) {
this.email = email;
} public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } /* private String username; 用户名不能为空,并且要是3-8的字符 abcdABcd private String paword; 密码不能为空,并且要是3-8的数字 private String paword2; 两次密码要一致
private String email;
可以为空,不为空要是一个合法的邮箱 private String birthday; 可以为空,不为空时,要是一个合法的日期
*
*/ public boolean validate(){
boolean isOk = true;
if(this.username==null || this.username.trim().equals(\"\") ){
isOk = false;
errors.put(\"username\", \"用户名不能为空!!\"); }else{
if(!this.username.matches(\"[a-zA-Z]{3,8}\")){
isOk = false;
errors.put(\"username\", \"用户名必须是3-8位的字母!!\");
} }
if(this.paword==null || this.paword.trim().equals(\"\")){
isOk = false;
errors.put(\"paword\", \"密码不能为空!!\"); }else{
if(!this.paword.matches(\"\\d{3,8}\")){
isOk = false;
errors.put(\"paword\", \"密码必须是3-8位的数字!!\");
} }
//private String paword2; 两次密码要一致
if(this.paword2!=null){
if(!this.paword2.equals(this.paword)){
isOk = false;
errors.put(\"paword2\", \"两次密码不一致!!\");
}
}
//private String email;
可以为空,不为空要是一个合法的邮箱
// flx_itcast@sina.com.cn
if(this.email!=null){
if(!this.email.matches(\"\\w+@\\w+(\\.\\w+)+\")){
isOk = false;
errors.put(\"email\", \"邮箱不是一个合法邮箱!!\");
}
}
//private String birthday; 可以为空,不为空时,要是一个合法的日期
if(this.birthday!=null){
try{
DateLocaleConverter conver = new DateLocaleConverter();
conver.convert(this.birthday);
}catch (Exception e) {
isOk = false;
errors.put(\"birthday\", \"生日必须要是一个日期!!\");
}
}
return isOk; }
}
package cn.itcast.web.controller;
import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.Date;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import cn.itcast.domain.User; import cn.itcast.exception.UserExistException; import cn.itcast.service.BusineService; import cn.itcast.service.impl.BusineServiceImpl; import cn.itcast.utils.WebUtils; import cn.itcast.web.formbean.RegisterFormBean;
public cla RegisterServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RegisterFormBean formbean = WebUtils.request2Bean(request, RegisterFormBean.cla);
//表单校验
if(formbean.validate()==false){
request.setAttribute(\"formbean\", formbean);
request.getRequestDispatcher(\"/WEB-INF/jsp/register.jsp\").forward(request,response);
return;
}
//把表单的数据填充到javabean中
User user = new User();
try {
//注册字符串到日期的转换器
ConvertUtils.register(new DateLocaleConverter(), Date.cla);
BeanUtils.copyProperties(user, formbean);
user.setId(WebUtils.makeId());
BusineService service = new BusineServiceImpl();
service.registerUser(user);
request.setAttribute(\"meage\", \"注册成功!!\");
request.getRequestDispatcher(\"/meage.jsp\").forward(request, response);
}catch (UserExistException e) {
formbean.getErrors().put(\"username\", \"注册用户已存在!!\");
request.setAttribute(\"formbean\", formbean);
request.getRequestDispatcher(\"/WEB-INF/jsp/register.jsp\").forward(request, response);
} catch (Exception e) {
e.printStackTrace(); //在后台记录异常
request.setAttribute(\"meage\", \"对不起,注册失败!!\");
request.getRequestDispatcher(\"/meage.jsp\").forward(request, response);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response); }
}
过滤器解决中文乱码
package cn.itcast.web.filter;
import java.io.IOException; import java.io.UnsupportedEncodingException;
import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse;
public cla CharacterEncodingFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
request.setCharacterEncoding(\"UTF-8\");
response.setCharacterEncoding(\"UTF-8\");
response.setContentType(\"text/html;charset=UTF-8\");
chain.doFilter(new MyRequest(request), response);
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
public void destroy() {
// TODO Auto-generated method stub
} }
cla MyRequest extends HttpServletRequestWrapper{ private HttpServletRequest request; public MyRequest(HttpServletRequest request) {
super(request);
this.request = request;
} @Override public String getParameter(String name) {
String value = this.request.getParameter(name);
if(value==null){
return null;
}
if(!this.request.getMethod().equalsIgnoreCase(\"get\")){
return value;
}
try {
value = new String(value.getBytes(\"iso8859-1\"),\"UTF-8\");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
return value; }
}
分页前端
<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"UTF-8\"%> <%@taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\"%>
显示所有书籍
图书信息
图书名称
作者
价格
图片
描述
操作
${book.name }
${book.author }
${book.price }
查看图片
${book.description }
修改
删除
当前第[${page.pagenum }]页
[${pagenum }]
总共[${page.totalpage }]页,总[${page.totalrecord }]纪录
(总结)Web性能压力测试工具之ApacheBench(ab)详解