对jsp的一个小结(8)使用servlet控制新闻管理、使用过滤器(解决乱码)和监听器(统计在线用户人数)
2015-03-28 17:55
951 查看
14.使用servlet控制新闻管理
1专题任务
2创建Servlet
3部署Servlet
4使用Servlet完成新闻添加
doadd.jsp修改成AddNewsSerlet类
web.xml部署
15使用过滤器(解决乱码)和监听器(统计在线用户人数)
1使用过滤器解决乱码
2使用监听器统计在线用户人数
doEnter.jsp
16.新闻管理系统开发总结(调试。F5F6F8,F5进入方法内部,F6逐行执行,F8跳过方法)
使用Servlet控制业务流程
1专题任务
2创建Servlet
package demo.web.servlet; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class MyServlet1 implements Servlet { @Override public void destroy() { // TODO Auto-generated method stub } @Override public ServletConfig getServletConfig() { // TODO Auto-generated method stub return null; } @Override public String getServletInfo() { // TODO Auto-generated method stub return null; } @Override public void init(ServletConfig arg0) throws ServletException { // TODO Auto-generated method stub } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { // TODO Auto-generated method stub } }
package demo.web.servlet; import java.io.IOException; import javax.servlet.GenericServlet; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class MyServlet2 extends GenericServlet { @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { // TODO Auto-generated method stub } }
package demo.web.servlet; 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 MyServlet3 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doGet(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doPost(req, resp); } @Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { // TODO Auto-generated method stub super.service(arg0, arg1); } }
3部署Servlet
package demo.web.servlet; import java.io.IOException; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyServlet3 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("处理请求,doGet被调用"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("处理请求,doPost被调用"); } /*@Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { // TODO Auto-generated method stub super.service(arg0, arg1); }*/ @Override public void destroy() { System.out.println("servlet销毁,destroy被调用"); } @Override public void init(ServletConfig config) throws ServletException { System.out.println("servlet初始化,init被调用"); String initParam=config.getInitParameter("charSetContent"); System.out.println(initParam); } }web.xml部署(四种servlet匹配)
<servlet> <servlet-name>myServlet3</servlet-name> <servlet-class>demo.web.servlet.MyServlet3</servlet-class> <init-param> <param-name>charSetContent</param-name> <param-value>utf-8</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>myServlet3</servlet-name> <url-pattern>/myServlet3</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>myServlet3</servlet-name> <url-pattern>/demo/myServlet3</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>myServlet3</servlet-name> <url-pattern>/demo/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>myServlet3</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
4使用Servlet完成新闻添加
doadd.jsp修改成AddNewsSerlet类
package com.pb.news.web.servlet; import java.io.File; import java.io.IOException; import java.util.Date; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import com.pb.news.dao.NewsDao; import com.pb.news.dao.impl.NewsDaoImpl; import com.pb.news.entity.News; import com.pb.news.service.impl.NewsServiceImpl; /** * Servlet implementation class AddNewsServlet */ public class AddNewsServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public AddNewsServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //接收新闻内容,调用相应Service方法处理请求,最红决定跳转到哪个jsp页面 NewsServiceImpl newsService=new NewsServiceImpl(); NewsDao newsDao=new NewsDaoImpl(); newsService.setNewsDao(newsDao); request.setCharacterEncoding("utf-8"); boolean bRet = false; boolean bUpload = false; String uploadFileName = ""; String fieldName = ""; News news = new News(); news.setCreateDate(new Date()); boolean isMultipart = ServletFileUpload.isMultipartContent(request); String uploadFilePath = request.getSession().getServletContext().getRealPath("/upload/" ); if (isMultipart == true) { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try { List<FileItem> items = upload.parseRequest(request); Iterator<FileItem> iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()){ fieldName = item.getFieldName(); if (fieldName.equals("title")){ news.setTitle(item.getString("UTF-8")); }else if(fieldName.equals("id")){ String id = item.getString(); if (id != null && !id.equals("")){ news.setId(Integer.parseInt(id)); } }else if (fieldName.equals("categoryId")){ news.setCategoryId(Integer.parseInt(item.getString())); }else if (fieldName.equals("summary")){ news.setSummary(item.getString("UTF-8")); }else if (fieldName.equals("newscontent")){ news.setContent(item.getString("UTF-8")); }else if(fieldName.equals("author")){ news.setAuthor(item.getString("UTF-8")); } }else{ String fileName = item.getName(); if (fileName != null && !fileName.equals("")) { File fullFile = new File(item.getName()); File saveFile = new File(uploadFilePath, fullFile.getName()); item.write(saveFile); uploadFileName = fullFile.getName(); news.setPicPath(uploadFileName); bUpload = true; } } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("上传成功后的文件名是::"+news.getPicPath()); //调用后台方法,将新闻信息插入数据库 bRet=newsService.addNews(news); if (bRet) { response.sendRedirect("jsp/admin/newsDetailList.jsp"); } else { response.sendRedirect("jsp/admin/newsDetailCreate.jsp"); } } }
web.xml部署
<servlet> <servlet-name>AddNewsServlet</servlet-name> <servlet-class>com.pb.news.web.servlet.AddNewsServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AddNewsServlet</servlet-name> <url-pattern>/AddNewsServlet</url-pattern> </servlet-mapping>
15使用过滤器(解决乱码)和监听器(统计在线用户人数)
1使用过滤器解决乱码
package com.pb.news.web.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /** * Servlet Filter implementation class CharacterEncodingFilter */ public class CharacterEncodingFilter implements Filter { /** * Default constructor. */ public CharacterEncodingFilter() { // TODO Auto-generated constructor stub } /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub // place your code here // pass the request along the filter chain request.setCharacterEncoding("UTF-8"); chain.doFilter(request, response); response.setCharacterEncoding("UTF-8"); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub } }自动部署web.xml
-<filter> <display-name>CharacterEncodingFilter</display-name> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>com.pb.news.web.filter.CharacterEncodingFilter</filter-class> </filter> -<filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2使用监听器统计在线用户人数
package com.pb.news.constants; public class Constants { public static int ONLINE_USER_COUNT =0;//在线用户数 }
package com.pb.news.entity; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; import com.pb.news.constants.Constants; public class User implements HttpSessionBindingListener{ private int id; private String userName; private String password; private String email; public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } private int userType; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getUserType() { return userType; } public void setUserType(int userType) { this.userType = userType; } public void valueBound(HttpSessionBindingEvent arg0) { //存入session时自动调用 Constants.ONLINE_USER_COUNT ++; } public void valueUnbound(HttpSessionBindingEvent arg0) { //从session中删除时自动调用 Constants.ONLINE_USER_COUNT --; } }enter.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="doEnter.jsp" method="post"> 来宾名:<input type="text" name="guestName"/><br/> <input type="submit" value="进入" /> </form> </body> </html>
doEnter.jsp
<!-- 同学们可以使用Servlet代替本页面 --> <%@ page language="java" pageEncoding="UTF-8"%> <%@ page import="com.pb.news.entity.User" %> <% //从请求中取出访客名 String guestName=request.getParameter("guestName"); if(guestName==null||guestName.equals("")){ response.sendRedirect("enter.jsp"); }else{ User user=new User();//用户对象 user.setUserName(guestName);//在user对象中保存访客名 session.setAttribute("guest", user);//在session中保存user对象 response.sendRedirect("online.jsp"); } %>online.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.pb.news.entity.User" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% User user=null; if(session.getAttribute("guest")==null){ response.sendRedirect("enter.jsp"); }else{ user=(User)session.getAttribute("guest"); %> 您好:<%= user.getUserName() %><br/> 此时在线人数为:<%= com.pb.news.constants.Constants.ONLINE_USER_COUNT%><br/> <a href="doOut.jsp">离开</a> <%} %> </body> </html>doOut.jsp
<!-- 同学们可以使用Servlet代替本页面 --> <%@ page language="java" pageEncoding="UTF-8"%> <% session.invalidate();//使用session失效 response.sendRedirect("enter.jsp"); %>
16.新闻管理系统开发总结(调试。F5F6F8,F5进入方法内部,F6逐行执行,F8跳过方法)
使用Servlet控制业务流程
相关文章推荐
- 使用监听器实现一个统计网站在线人数的示例
- java使用监听器实现一个统计网站在线人数的示例
- 使用监听器实现一个统计网站在线人数的示例
- Servlet监听器的简单使用实现统计在线人数
- JavaWeb---在线用户显示与管理---(监听器/过滤器)
- JSP+Servlet培训班作业管理系统[13] -使用基于Action的后端(用户登录为例)
- java创建一个统计在线人数的监听器
- java web监听器统计在线用户及人数
- Servlet监听器——实现在线登录人数统计小例子
- java使用监听器实现对在线用户的统计
- 关于jsp内置对象Session和Cookie使用的肤浅理解,如何使用Session来统计网站在线人数
- Servlet监听器,统计网站在线人数实例
- Servlet监听器——实现在线登录人数统计小例子
- 使用 Redis 统计在线用户人数
- web day21 web过滤器Filter,应用案例统计IP,解决全站乱码,粗粒度权限控制,页面静态化
- java web监听器统计在线用户及人数
- 使用过滤器Filter解决JSP+Servlet页面编码乱码
- JSP表单提交中文乱码解决方法(使用过滤器)(GET方法无效)
- servlet过滤器2 解决用户非法在线 filter
- 统计在线和登陆人数,管理这些用户