JAVA WEB结课作业
1. 编写一个Servlet,实现统计网站被访问次数的功能。
import jakarta. servlet. ServletContext ;
import jakarta. servlet. ServletException ;
import jakarta. servlet. http. HttpServlet ;
import jakarta. servlet. http. HttpServletRequest ;
import jakarta. servlet. http. HttpServletResponse ;
import java. io. IOException ;
import java. io. PrintWriter ;
public class ShowTimesServlet extends HttpServlet {
private static final long serialVersionUID = 1L ;
@Override
protected void doPost ( HttpServletRequest req, HttpServletResponse resp)
throws ServletException , IOException {
this . doGet ( req, resp) ;
}
@Override
protected void doGet ( HttpServletRequest req, HttpServletResponse resp)
throws ServletException , IOException {
ServletContext context = req. getServletContext ( ) ;
Integer times = ( Integer ) context. getAttribute ( "times" ) ;
if ( times == null ) {
times = new Integer ( 1 ) ;
} else {
times = new Integer ( times. intValue ( ) + 1 ) ;
}
resp. setContentType ( "text/html;charset=GB2312" ) ;
PrintWriter out = resp. getWriter ( ) ;
out. println ( "<html><head><title>" ) ;
out. println ( "页面访问统计" ) ;
out. println ( "</title></head><body>" ) ;
out. println ( "当前页面被访问了" ) ;
out. println ( "<font color = red size=20>" + times + "</font>次" ) ;
context. setAttribute ( "times" , times) ;
}
}
<?xml version="1.0" encoding="UTF-8"?>
< web-app xmlns = " http://xmlns.jcp.org/xml/ns/javaee"
xmlns: xsi= " http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation= " http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version = " 4.0" >
< servlet>
< servlet-name> ShowTimesServlet</ servlet-name>
< servlet-class> ShowTimesServlet</ servlet-class>
</ servlet>
< servlet-mapping>
< servlet-name> ShowTimesServlet</ servlet-name>
< url-pattern> /ShowTimesServlet</ url-pattern>
</ servlet-mapping>
</ web-app>
结果展示
2. 请编写一段程序,使程序能够读取该Servlet的配置信息,从中获得参数名为encoding对应的参数值,并输出到页面上。
import jakarta. servlet. ServletConfig ;
import jakarta. servlet. ServletContext ;
import jakarta. servlet. ServletException ;
import jakarta. servlet. http. HttpServlet ;
import jakarta. servlet. http. HttpServletRequest ;
import jakarta. servlet. http. HttpServletResponse ;
import java. io. IOException ;
import java. io. PrintWriter ;
public class TestServlet extends HttpServlet {
@Override
protected void doGet ( HttpServletRequest req, HttpServletResponse resp)
throws ServletException , IOException {
PrintWriter out = resp. getWriter ( ) ;
ServletConfig config = this . getServletConfig ( ) ;
String param = config. getInitParameter ( "encoding" ) ;
out. println ( "encoding=" + param) ;
}
@Override
protected void doPost ( HttpServletRequest req, HttpServletResponse resp)
throws ServletException , IOException {
this . doGet ( req, resp) ;
}
}
<?xml version="1.0" encoding="UTF-8"?>
< web-app xmlns = " http://xmlns.jcp.org/xml/ns/javaee"
xmlns: xsi= " http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation= " http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version = " 4.0" >
< servlet>
< servlet-name> TestServlet</ servlet-name>
< servlet-class> TestServlet</ servlet-class>
< init-param>
< param-name> encoding</ param-name>
< param-value> UTF-8</ param-value>
</ init-param>
</ servlet>
< servlet-mapping>
< servlet-name> TestServlet</ servlet-name>
< url-pattern> /TestServlet</ url-pattern>
</ servlet-mapping>
</ web-app>
结果展示
3. 编写一个类,该类使用HttpServletRequest对象的getHeader(“referer”)方法实现下载资源防盗链的功能。
import jakarta. servlet. RequestDispatcher ;
import jakarta. servlet. ServletException ;
import jakarta. servlet. http. HttpServlet ;
import jakarta. servlet. http. HttpServletRequest ;
import jakarta. servlet. http. HttpServletResponse ;
import java. io. IOException ;
import java. io. PrintWriter ;
import java. io. StringReader ;
public class DownManagerServlet extends HttpServlet {
@Override
protected void doGet ( HttpServletRequest req, HttpServletResponse resp)
throws ServletException , IOException {
resp. setContentType ( "text/html;charset=utf-8" ) ;
PrintWriter out = resp. getWriter ( ) ;
String referer = req. getHeader ( "referer" ) ;
String sitPart = "http://" + req. getServerName ( ) ;
if ( referer != null && referer. startsWith ( sitPart) ) {
out. println ( "dealing download ... " ) ;
} else {
RequestDispatcher rd = req. getRequestDispatcher ( "/download.html" ) ;
rd. forward ( req, resp) ;
}
}
}
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> Insert title here</ title>
</ head>
< body>
< a href = " DownManagerServlet" > download</ a>
</ body>
</ html>
<?xml version="1.0" encoding="UTF-8"?>
< web-app xmlns = " http://xmlns.jcp.org/xml/ns/javaee