在books界面显示要添加的书籍信息
<form action="BookServlet" method="post">
书名:<input type="text" name="bname"><br><br>
作者:<input type="text" name="bauthor"><br><br>
定价:<input type="text" name="bprice"><br><br>
<input type="submit" value="添加">
</form>
提交到bookservlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
// List<BookBean> all=new ArrayList<BookBean>();
String bname=request.getParameter("bname");
String bauthor=request.getParameter("bauthor");
Float
//request.getParameter()获取到的是String类型要强制转化为Float bprice=Float.parseFloat(request.getParameter("bprice"));
BookBean b=null;
b=new BookBean();
b.setBname(bname);
b.setBauthor(bauthor);
b.setBprice(bprice);
//从session中获取保存的数据信息,假设为空,新建集合,把数据存入集合;假设不为空,直接获取集合,并将书籍添加
List<BookBean> bookList;
if(request.getSession().getAttribute("blist")==null){
bookList=new ArrayList<BookBean>();
bookList.add(b);
}else{
bookList=(ArrayList<BookBean>)request.getSession().getAttribute("blist");
bookList.add(b);
}
//将集合放入session
request.getSession().setAttribute("blist", bookList);
request.getRequestDispatcher("showInf.jsp").forward(request, response);
}
在这里也可以不用session直接将List all=new ArrayList();放在doPost()方法外,这样就不会每次都新创建一个集合。
将全部添加的书籍显示在页面上showIn.jsp
<body>
<center><h2>全部书籍列表</h2>
<table border="1" width="70%">
<tr>
<td>书名</td>
<td>作者</td>
<td>定价</td>
</tr>
<%
Iterator<BookBean> iter=((ArrayList)session.getAttribute("blist")).iterator();
while(iter.hasNext()){
<!--只需在当前页面显示即可-->
pageContext.setAttribute("books", iter.next());
//request.setAttribute("books",iter.next());
%>
<tr>
<td>${books.bname}</td>
<td>${books.bauthor }</td>
<td>${books.bprice }</td>
</tr>
<%} %>
</table>
<a href="books.jsp">继续添加</a>
</center>
</body>
刚新学了过滤器,所以直接加入一个登陆的安全过滤器,即若未经登陆不能进入其他页面,首先需要有一个登陆页面login,然后跳到loginServlet 中
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//判断用户名和密码是否正确,若正确则跳转至添加书籍界面,若不正确则提供错误信息跳回登录页面
String username=request.getParameter("username");
String password=request.getParameter("password");
if(username.equals("aa")&&password.equals("123")){ request.getSession().setAttribute("user",username); request.getRequestDispatcher("books.jsp").forward(request, response);
}else{
request.setAttribute("error", "用户名或密码错误"); request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
这是过滤器loginFilter,同时需要配置web.xml
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
//判断访问路径是否有loginServlet,如果有则放行,否则检查用户是否登录
if(req.getRequestURI().indexOf("/loginServlet")>-1){
chain.doFilter(request, response);
}else{
if(req.getSession().getAttribute("user")!=null){
chain.doFilter(request, response);
}else{
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}