欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

jspservlet入门小项目--留言管理

发布时间:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 jspservlet入门小项目--留言管理 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一,jsp,servlet基础知识

1,jsp有一些内置对象,常用的有:

out(PrintWriter),request(HttpServletRequest),response(HttpServletresponse),session(HttpSession),application(ServletContext)

注意:建议html和java代码分开。

2,<%@ include file="要包含的页面路径" %>,这种叫静态包含。
<jsp:include page="要包含的页面路径" /> ,这叫做动态包含。
静态包含:导入文件会先被编译成html文件才进行导入。(会编译成一个servlet)
动态包含:(多个servlet,运行的时候包含进来)不进行任何编译,直接将要导入的文件原样导入,然后在被导入页面进行编译。
最佳实践:开发中90%使用静态包含。因为使用动态包含效率低而且有可能会出现变量的重名。其他比如权限用动态。

3,如果希望在不同页面中传递对象,可以通过xx.setAttribute("xx",obj)完成设置,可以通过xx.getAttribute("xx",obj)来接收。
可以传递对象的内置对象有如下一些:
.pageContext(对于servlet而言没有)
当前页面存在,当发生跳转之后数据丢失。
.request(HttpServletRequest)
当前页面存在,服务器跳转存在,客户端跳转不存在
.session(HttpSession)
只有浏览器关闭session才会丢失。否则一直存在
.application(ServletContext)
只要服务器没有重启就一直存在

使用原则:
能用pageContext就不用request,能用request就不用session,能用session就不用application。

重定向response.sendRedirect,跳转之后仍会执行完剩下的代码才进行跳转。

一定注意:在response.sendRedirect后加上 return;不能通过参数传中文。

4,解决乱码问题,使用filter

1 <filter> 2 <filter-name>CharEncoding</filter-name> 3 <filter-class>tk.dongyeblog.shop.filter.CharFilter</filter-class> 4 <init-param> 5 <param-name>encoding</param-name> 6 <param-value>UTF-8</param-value> 7 </init-param> 8 </filter> 9 <filter-mapping> 10 <filter-name>CharEncoding</filter-name> 11 <url-pattern>/*</url-pattern> 12 </filter-mapping>

定义filter实现Filter接口。通过request.setCharacterEncoding(encoding);设置编码。

1 @Override 2 public void doFilter(ServletRequest request, ServletResponse response, 3 FilterChain chain) throws IOException, ServletException { 4 request.setCharacterEncoding(encoding); 5 chain.doFilter(request, response); 6 7 } 1 @Override 2 public void init(FilterConfig cfg) throws ServletException { 3 String e = cfg.getInitParameter("encoding"); 4 if(e==null || "".equals(e)){ 5 encoding = "UTF-8"; 6 }else{ 7 encoding = e; 8 } 9 }

通过<init-param></init-param>来设置初始化编码。

5,判断是否登录。如果未登录不让访问admin目录

web.xml配置

1 <filter> 2 <filter-name>AdminCheckFilter</filter-name> 3 <filter-class>tk.dongyeblog.shop.filter.AdminCheckFilter</filter-class> 4 </filter> 5 <filter-mapping> 6 <filter-name>AdminCheckFilter</filter-name> 7 <url-pattern>/admin/*</url-pattern> 8 </filter-mapping> 1 @Override 2 public void doFilter(ServletRequest request, ServletResponse response, 3 FilterChain chain) throws IOException, ServletException { 4 HttpServletRequest req = (HttpServletRequest)request; 5 HttpServletResponse resp = (HttpServletResponse)response; 6 HttpSession session = req.getSession(); 7 User u = (User)session.getAttribute("loginUser"); 8 if(u==null){ 9 resp.sendRedirect(req.getContextPath()+"/loginInput.jsp"); 10 } 11 chain.doFilter(request, response); 12 }

 

 

转载于:https://www.cnblogs.com/dongye/p/3242111.html

总结

以上是生活随笔为你收集整理的jspservlet入门小项目--留言管理的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。