JAVA WEB学习(二)

一些总结


使用struts2的项目中各个部分的作用

1.WebContent/*.jsp:显示前端的页面,用于和用户的交互
2.WebContent/WEB-INF/web.xml:设置过滤器
3.WebContent/WEB-INF/lib/*.jar:项目运行过程中依赖的库文件
4.src/[package]/*.java:用于定义各种action,实现对前端用户发出的请求进行处理
5.src/struts.xml:该文件将前端页面和后台的动作联系到了一起

struct.xml的编写

下面是一个动作的例子

<struts>
    <package name="searchBookName"  extends="struts-default">
        <action name="search" class="com.dongchang.action.SearchBook" method="execute">
            <result name="SUCCESS">/findbooks.jspresult>
            <result name="FALSE">/false.jspresult>
        action>
    package>
struts> 

package 为一个包,我们需要关注的是中间action的部分。对于上面的例子,是一个返回用户主页的例子,action的名字是name,这个名字是在jsp等前端页面调用的标识。class属性的值,是src中你的.java文件的包名加文件名。而method属性的值则是在.java文件中你将要调用到的方法,如果method属性为空则默认execute方法。下面result标签则是根据.java文件中调用的方法的返回值确定这个action下一步跳转的页面:当返回的字符串为”SECUSS“那么就会跳转到findbook.jsp这个页面,当然也可以添加其他情况。
这样,前端和后台之间就联系起来了。

前端和后台的数据交互

1.jsp(html)中的表单,如:

"search" method="get"> "name" type="text" placeholder="这里输入姓名以查询书籍信息" size="22" required /> type="submit" value="开始查询" />

这是一个简单的提交姓名的表单,注意这个input标签的变量名为name,当点击开始查询后会调用search这个action,根据struts.xml文件,将会调用下面这个java文件中的execute方法。

public class SearchBook {
    private String name;

    public String getName() { return this.name; }

    public void setName(String name) { this.name = name; }
    public String execute() { return "SUCCESS"; }
}

同时因为form中提交的变量名为name,因此struts2会自动调用java中的setName方法将私有变量name赋值为jsp中接收到的数值。
因为返回值为”SUCCESS“因此会跳转到findbook.jsp界面。假设这个页面有一个table需要上一个jsp中获得的name,此时struts2会自动挑勇getName方法实现变量的传递。
2.在链接中传递数据
在struts2中可以利用链接调用一个方法,如

<a href=action_name>链接名a>

调用方法的同时传递数据

<a href=action_name?data1=value1&data2=value2>链接名a>

此时同样会调用get和set方法实现数据的交换,需要注意的是此时特殊字符如空格+号等不能被传递,可以使用URLEncoder方法首先对数据编码然后URLDecoder解码。
3.后台向前台传入数
(1) 利用getAttribute()在jsp页面获得,会调用getter方法
(2)使用session
后台传入,传入session,相当于python的字典,key和value,value可以是任意类型:

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
String[] list;
...
ServletRequest request = ServletActionContext.getRequest();
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();

session.setAttribute("booklist", list);

jsp接收:

<%@ page language="java" import="java.util.*"
    contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
            String list = (String[]) session.getAttribute("booklist");
            if (list.size() > 0) {
                youraction;
            } else {
                error;
            }
%>

你可能感兴趣的:(java)