jsp中request.getParameter(“xxx”);方法将失效 &两种Date之间的转换
(1)处理请求和响应的字符编码
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
(2)获取表单提交的数据容易出现的问题
如果你的form表单不涉及文件上传(图片、txt…),那么写enctype="multipart/form-data"是会容易导致出现错误的:当你的表单中有enctype="multipart/form-data"属性的时候,你的request.getParameter(“xxx”);方法将失效,所以会出现获取不到表单数据的现象。解决方法如下:
- 如果你的表单不涉及文件上传的话,那么你完全可以删除这个属性,这样request.getParameter(“xxx”);方法就可以使用了。
- 如果前端form表单有enctype=“multipart/form-data”,可以在类上加入注解@MultipartConfig,这样就可以使用request.getParameter(“xxx”); 获取表单数据了
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sujie.entity.Student;
import com.sujie.service.StudentService;
import com.sujie.service.impl.StudentServiceImpl;
@MultipartConfig
@WebServlet("/stuList.do")
public class StudentListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public StudentListServlet() {
super();
}
......
}
(3)转发和重定向
//将信息存到session域中
request.getSession().setAttribute("error", "用户名或密码输入错误!");
//转发
request.getRequestDispatcher("/stuList.jsp").forward(request, response);
//重定向
response.sendRedirect(request.getContextPath()+"/login.jsp");
(4)两种Date之间的转换(java.util.Date 与 java.sql.Date;)
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理请求和响应的字符编码
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//设置date接收格式
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//获取前端form表单数据
int id = Integer.parseInt(request.getParameter("id"));
String carNum = request.getParameter("carNum");
int carSize = Integer.parseInt(request.getParameter("carSize"));
String driver = request.getParameter("driver");
//声明两个日期
Date carFactoryDate = null;
Date carCheckDate = null;
try {//将前台传来的数据按指定格式接收,转换成Date
carFactoryDate =format.parse( request.getParameter("carFactoryDate"));
carCheckDate = format.parse( request.getParameter("carCheckDate"));
} catch (ParseException e) {
e.printStackTrace();
}
String carBrand = request.getParameter("carBrand");
int carDestroy = Integer.parseInt(request.getParameter("carDestroy"));
int deFlag = 0;
//因为需要和数据库交互,所以Entity层Car.java中的和时间有关的属性,是用的java.sql.Date包中的 //Date,所以要把这里的Date转成指定类型,这就用到了Date自带的getTime()方法
//即:使用java.sql.Date(carFactoryDate.getTime())可将当前java.util.Date转成 //java.sql.Date
Car car = new Car(id, carNum, carSize, driver, new java.sql.Date(carFactoryDate.getTime()), new java.sql.Date(carCheckDate.getTime()),carBrand, carDestroy, deFlag);
//处理相关数据
CarService carService = new CarServiceImpl();
int updateAdminMSG = carService.updateCarMSG(car);
if(updateAdminMSG >0) {
request.getRequestDispatcher("/carList.do").forward(request, response);
}
}
(5)四大作用域
-
application作用域:它的有效范围是整个应用,指从应用启动到应用结束。
-
session作用域:有效范围是当前会话,指冲用户打开浏览器开始到用户关闭浏览器。
-
Request作用域:变量可以跨越forword前后的两页,但是刷新页面就需要重新计算了。
-
page作用域:作用范围仅限于用户请求的当前页面。