jsp 路线


Servlet

1. 创建servlet

public class MyServletA implements Servlet
    public void init(ServletConfig config) throws ServletException
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException   
    public void destroy()
    public ServletConfig getServletConfig()
    public String getServletInfo()
public class MyServletB extends GenericServlet
    @Override
    public void init(ServletConfig config) throws ServletException
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
    @Override
    public void destroy()
public class MyServletC extends HttpServlet
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    1.System.out.println后台
    2.PrintWriter out--->out.println()页面
    3.request中的方法拿到主机名字之类的
    4.request设置属性传参数---->对象,一般需要向下转型
    5.跳转,重定向

验证码小程序

public class HttpServletDemo extends HttpServlet {


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doPost(request, response);

    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //产生随机数对象
        Random rd=new Random();
        String str="0123456789abcdefghijklmvopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

        int width=60;
        int height=70;
        //获取一张图片
        BufferedImage bi=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        //获取一个画布
        Graphics gh=bi.getGraphics();
        //设置颜色
        gh.setColor(Color.black);
        //画一个矩形
        gh.fillRect(0,0, width, height);

        //设置颜色
        gh.setColor(Color.white);
        gh.fillRect(1, 1, width-2, height-2);

        //设置颜色
        gh.setColor(Color.blue);
        gh.setFont(new Font("宋体", Font.BOLD, 20));

        //随机产生4个
        for(int  i=0;i<4;i++){

            int a=rd.nextInt(31*2);
            gh.setColor(new Color(rd.nextInt(256), rd.nextInt(256), rd.nextInt(256)));
            String s=str.substring(a, a+1);
            gh.drawString(s, 14*i, 20);
        }
        //写字
        //gh.drawString("你好", 14, 20);

        //干扰线
        for(int b=1;b<=20;b++){
            gh.setColor(new Color(rd.nextInt(256), rd.nextInt(256), rd.nextInt(256)));
            gh.drawLine(rd.nextInt(width), rd.nextInt(height), rd.nextInt(width), rd.nextInt(height));
        }
        //刷新
        bi.flush();
        //设置图片类型
        response.setContentType("image/jpg");
        //把图片写出
        ImageIO.write(bi, "jpg", response.getOutputStream());

    }

}

ServletContext

ServletContex设置属性

ServletContext context=this.getServletContext();
context.setAttribute("AAA", "张三");
System.out.println(context.getAttribute("AAA"));

ServletContext获取属性和其他参数

ServletContext con=this.getServletContext();
Object obj=con.getAttribute("AAA");
System.out.println("obj="+obj);
//获取公共参数
String c=con.getInitParameter("context-name");
System.out.println(c);
//获取路径
String p=con.getRealPath("/index.jsp");
System.out.println(p);
//建立流对象
InputStream input=con.getResourceAsStream("/index.jsp");
System.out.println(input);

Set<String> set=con.getResourcePaths("/WEB-INF");
System.out.println(set);

ServletContext统计网页访问次数

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    PrintWriter pw=response.getWriter();
    //获取ServletContext
    ServletContext con=this.getServletContext();
    //获取参数
    Integer ir=(Integer)con.getAttribute("cout");
    //判断ir是否为null
    if(ir==null){
        //说明是第一次访问
        con.setAttribute("cout", 1);

    }else{//就说明已经出现过了

        con.setAttribute("cout", ir.intValue()+1);

    }

    Object ot=con.getAttribute("cout");

    pw.println("你是第"+ot+"次访问页面");
    pw.flush();
    pw.close();
}

Session

Session统计网页访问

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {


    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    PrintWriter pw=response.getWriter();
    //获取servletContext
    ServletContext context=this.getServletContext();
    //获取session对象
    HttpSession session=request.getSession();

    //获取属性
    Integer ir=(Integer)context.getAttribute("count");

    if(ir==null){

        context.setAttribute("count", 1);

    }else{

        //判断是否是新的会话
        if(session.isNew()){
            context.setAttribute("count", ir.intValue()+1);
        }


    }



    Object obj=context.getAttribute("count");

    pw.println("你是第"+obj+"次访问页面");
    pw.flush();
    pw.close();
}

JSP基本语法

注释
变量
循环打印九九乘法表
动态包含
静态包含

Cookie登录界面自动输入用户名

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {


    //处理乱码问题
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    //获取用户名
    String userName=request.getParameter("userName");

    //判断用户名
    if(userName.contains("lingyao")){//登录成功
        /**
         * 建立Cookie对象 把用户名设置为属性值
         */

        Cookie cook=new Cookie("uName", userName);
        cook.setPath("/");
        cook.setMaxAge(60*60*24);//一天
        response.addCookie(cook);

        //获取session
        HttpSession session=request.getSession();
        //把用户名保存到session中
        session.setAttribute("userName", userName);

        response.sendRedirect("/day20_2/session1/success.jsp");

    }else{//登录失败

        //设置request属性
        request.setAttribute("msg", "用户名错误");
        request.getRequestDispatcher("/session1/Login.jsp").forward(request, response);

    }

JSP和数据库的整合

  1. 根据数据库判断用户登录是否成功
  2. 根据查询数据库显示到用户的查询界面当中
    类似下面的代码
    <%

        List<User> list=(ArrayList<User>)request.getAttribute("list");

     %>

     <table border="1" align="center" width="40%">

            <% 
                //遍历list集合
                for(User user:list){%>

                    <tr>

                        <td><%=user.getUserName() %></td>
                        <td><%=user.getPassword() %></td>
                    </tr>
            <%}%>
     </table>

Java bean

<%
    //实例化对象
    User user=new User();
    //setter方法进行设置
    user.setUserName("jack");
    user.setAge(20);
    user.setSex("男");
    user.setMairred(false);
%>

<%--调用getter获取属性 --%>
<%=user.getUserName() %>
<%=user.getAge() %>
<%=user.getSex() %>
<%=user.isMairred() %>

<hr/>
<%--- 相当于实例化对象 user2 
    User user=new User();
--%>
<jsp:useBean id="user2" class="cn.cm.lingyao.User.User"></jsp:useBean>
<%-- 设置属性 相当于调用setter方法 --%>
<jsp:setProperty property="userName" name="user2" value="rows"/>
<jsp:setProperty property="age" name="user2" value="21"/>
<jsp:setProperty property="sex" name="user2" value="女"/>
<jsp:setProperty property="mairred" name="user2" value="false"/>
<%-- 获取属性 相当于调用getter方法 --%>
<jsp:getProperty property="userName" name="user2"/>
<jsp:getProperty property="age" name="user2"/>
<jsp:getProperty property="sex" name="user2"/>
<jsp:getProperty property="mairred" name="user2"/>

总结

  1. 用Servlet处理用户请求,Servlet当中用PrintWriter打印太多的html代码
    嫌弃Java代码当中包含太多html代码!!

  2. 用Servlet和JSP处理用户请求。把JSP页面是html包含java代码
    嫌弃html代码中包含太多java代码,用javabean减少一下java代码?

  3. 用Servlet和JSP和JavaBean处理。这就是MVC。
    感觉JavaBean在减少java代码方面表现不佳呀!

网络项目:数据,业务,表现。
数据—>模型—>Moudle–>M—>JavaBean
表现—>视图—->View—->V—->JSP
业务—>控制—>Controller—>C—>Servlet

MVC开发步骤就是按照M—>V—>C去开发的。

思考:

第一,JavaBean和Servlet的分工
1.JavaBean主要是在JSP页面当中直接对类的实例进行操作,减少操作数据库。
2.Servlet处理表单提交,进行数据库操作。

第二,Servlet在JSP页面的绑定方式
1.一个jsp页面和servlet的绑定,form当中的action属性。
2.JSP页面进行页面跳转,直接到Servlet

第三,JSP页面的跳转方式
1.按钮跳转: window.location.href实现
2.servlet当中的转发和重定向

第四,JSP和CSS的整合,JSP和JS的分工整合

猜你喜欢

转载自blog.csdn.net/oneqinglong/article/details/72763885
jsp
今日推荐